<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/%E8%BF%AA.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/%E8%BF%AA.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"zhengyidi.github.io","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":true,"show_result":"flat","style":null},"back2top":{"enable":true,"sidebar":true,"scrollpercent":true},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="设计模式 - 结构型 - 适配器模式">
<meta property="og:type" content="article">
<meta property="og:title" content="15.适配器模式">
<meta property="og:url" content="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/15.%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F/index.html">
<meta property="og:site_name" content="Zhengyidi&#96;s 学习记录">
<meta property="og:description" content="设计模式 - 结构型 - 适配器模式">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2021-07-12T00:00:00.000Z">
<meta property="article:modified_time" content="2021-11-13T14:58:22.510Z">
<meta property="article:author" content="zhengyidi">
<meta property="article:tag" content="设计模式">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/15.%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>15.适配器模式 | Zhengyidi`s 学习记录</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

<link rel="alternate" href="/atom.xml" title="Zhengyidi`s 学习记录" type="application/atom+xml">
</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">Zhengyidi`s 学习记录</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">休对故人思故国，且将新火试新茶。诗酒趁年华。</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup">
        <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result">
  <div id="no-result">
    <i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>
  </div>
</div>

    </div>
  </div>

</div>
    </header>

    


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://zhengyidi.github.io/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/15.%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="zhengyidi">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Zhengyidi`s 学习记录">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          15.适配器模式
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2021-07-12 00:00:00" itemprop="dateCreated datePublished" datetime="2021-07-12T00:00:00+00:00">2021-07-12</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2021-11-13 14:58:22" itemprop="dateModified" datetime="2021-11-13T14:58:22+00:00">2021-11-13</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" rel="index"><span itemprop="name">设计模式</span></a>
                </span>
            </span>

          
            <div class="post-description">设计模式 - 结构型 - 适配器模式</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="Oh, this is an invalid password. Check and try again, please." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">
  <script id="hbeData" type="hbeData" data-hmacdigest="ed60f8408486423253c1bccde3c4c285bd467a0cc08debe9fb1a10bcca3d0e31">22064b17c03cb0c0e58c99349b6889d0b31470871e725085fde7c8feed9af7ef448bf85f8401896296f708682e1743da98ec523fcf2052bf89c3ff679b6a8ab0599a4bd0900963c8102335950992433675847dfc33f52ae51fc7b5b2afa810a1faed79aaeb869cd9e11bb9a72d1e9e0a7bc2e0f8c4bfaf36567d19f8829e1268bb224d30ec963dac3526aac8e002354210c0f2ea4049d319cbc5f0d837e3e00fa8021a8a5d875fbcf29ae1a8b1efb2c39ae82caa556138feb4839f49be80f2a76831b5b34fc517097b0707e529c718dc3ce35548d9297a971f693f01eaffd41888d8bcfb20a6e9171d32ffe85d1571491bffb2aa41a41495d92b3eb58ae0dcd326adee22d294b57979e3099b5c4136a4aa6aabcb58cb8ddb17a38f33bd0b482e429aaf3e23124e5fbe22c1cb9a7d5cdd483b3ad26642bdc968b8689b4d61eb52e094e1246eb5047c2b0ca12301f390aae176cc9c57c680d146f792842e161dfbf87e53d59e056eb94374edf6f1795e364a95753ff2a781a201c9bf60311673e32b70058bd7172e05d279f484bb1f4a30f2ebdc1a7586f1f13bb3ef607a34769a11968d9122a7d3e00cf5ceea577caee5d545f2be8fcf4f264e4b47d31f07b7c6f8661e83fa855e34c33a5c177918c8d5acf9a20e8acd1e280905cb37a6df7170f49fd53746b32c10fb02007f1e68103e0fc444107819ca7b1ae621afdaecff96270641815cd5a5462e7c43b3442ae44da446e95d2e83d8283e33c7a458e20330d576fb4787a36837b9a2cb99a5d0b4341086a7e688ab1768f29e93312d6eebcc3a6433c1ca98a0a6e2886b5b3ee377d246267e6629550cd4a160856685047d1a3458a4b3aeda9cfbdb1b41b0b9f7a47beca3dd45f0a4646bf81554ba9b22aea8d6133b57fdb7512dcd46e35dd7b45d79f6d076c1143d916ed34d36aeeaa0f8c74e8bb5b7159b9380acd39dfa197a9fec27ce70eaca7df83c68e3bde996994f8eb4eea06de04c774a3f563948bd73bb5450164be0880d0882464e29de89b4d14a9ae8fac9ebbada1ace0915b03242bd03225598cc5276f35290b16c09906bb4dbea2af9b62dbcaf630c9b855eb3afbb1f77b44c2226b6dd2dd93b385c63dc338400e7174dcec45ec11d9b7f8cd19118033f295536f0cc907175ce456437f388493bab0f9c9d26c0d516a26be6e73b8644189d237ca735e726f68da0e5ad99327f9668f65531d2a7e337dddb257036af63c92ee391c87a82271a02bc1e41d9ebba2743cc25e7fc39e999668d349307824a7f92936f440f7e4be07202c8b77ea6ea89bdefb1dbf8bd1f45264630651606e248050c94a94e8a3379865ea41f947603134854fe5ea48af69ff7d4eaab0b16abb162160546c4a8be6e14ce63d699f1760b02847276898e0c2f5d1dac4fc83356dfa1d95ffa02299db9c9180dd40ad31cbe62c2379c9749cbd6dc96ac81881e9a049757dfdda4326c18c355e4fa5e27cd0f1f81afafb958136cc0c1917a1b5ab6ef753c5a950acff5d05a21f0ca88893a3ee50f4845983798260a93897a428e9bd55bdb09593f04ac9b5bd1dde6c9fa709f9c80510e76fa1020d22f7cbd6cf39ea4e21c5211e6c02d17a04b4c708f203d8378984d591104e49c67ffd9e80540cbd8ea2dc76b5f595b40bd480662bda835d4747c60eaf46178abd9b8ca1352b646d663eda635afd46c8e83824a9baf74c756aef1f40fbd768b5b8ed5b1e1beb2d365541ef1bcc3393f9921edb9c40183d1301faa08729c0d264554973a38019aec191b18879961b45bb1cd9786f3bef2c61108ef8944ea3eb71de1690860b2c8a44acf443797e7f6525c8e1eac18861b5f7188d4dc875ef8083d5e331ad33e9ce33f3cd45ed86b1a3afe056828b3ebcb4e6c653aacc70e3dfec7effe2b51559e76d65142ee61b568184285394cbd03f1c93448b13f1b1c1d7dcf868a17b2676b2f1e259172d7b13cac5461d2ff4af41597e59229e710111c0af1807b3fbdbf9bfbf6048a674e32fbfd06d5dbd1148b7504a580210e45a09fdc47b869f36012f235c3e141e924054d32e2174155c18ade8297fed9b0db419f74e0a12ee7ef97d650ec5cf7c04c087d8b3ee4dea7d68814f425a699a2654827a203dc3dfa0bcd44e66752873bf55ddb3571ccb477d0dba5b6dfb4d4203360d37b2f4433b8b2e4af1c06b9b42630ade885537d6ba3d0d6e9640cf077238fc19fa88dcda779d38e16bee3b4819f9695ffa029eed33e3dc5562a0b5b657eebf93ac379bf9273bc5c8a160ad12483286b2a30020903bc1523b087805adb306100b5b9f98e3c9381bd5cf942f63e64335ae3df77e70e9fae7be9118f2ebb476f037fc9c2decd8e8bec53eccc23a0774c33c6ed5dfc35e42df14460403217fa5560adff02d3d5af3c004ebbcc3deb803673f2c0a2b25ade9797950913c906dcff944d0178dfae9141165b017369ab8c5d0d9137c715b546fe0260896973c5a6b9f8802d5c09763cf11c2a5844a69b30bbcd0fab57e2ea41a5515541733a7d829461557e1d6f44ef9c12406df86b02d7075ca89d374c7dd7731f36f6ab203063889c4fcc540a7e5375550c3662ddfd400f3092cf165a0a20de39a15b2e5e44330edb11a0106d742ee42dd9b072e7e41852c6826c83a26b88fc7fe1246603e2c795a35d9a96975bd2702b95ec8e4747a3a9355292de0b81432cd204f8b06e2dd23e66b887b14b4061141a7455242b43c650783a968abc0cd0e5423e977288b3da7fe394f7b5f460a228d9fe664d48bcad6fad484475ccb70ab8bfe5aacea28276533ac636f51d217894e1d2e8116bcf78ffe519a8ce2b95f67f467ed2940b7c2dabaea4f6637a06b79b5123579a70d803f3cda0cc9ddcec3ef8bcbce1fe9dc716a5b98841502e473dd3326e4a258f20aefdbcfcd25f91d4e86d0a83d5fb4e0a87875222168a29e0643d550ab584b7fa4bfae172e1cefd112d3b5e11dc8f9895e800a2f3732ef267b97dd768125f707338e4063660ca63ce9de4be276507348bccace62f7496e5ad0cf8c754e25094a11d1bfdd6132ef9facb1d18afdfa9d25d0c10d2f4370ebe6a93351810c7015f4658b2a99000b9651710558b3a715c35f6d8c2ca9eff93f8d04a8b98d2973b46259ef97ac06d880bd26c26db2f2e60daf430ecae459ddd63975df0e4f50f8dee01886113171a4ac18b9edd3a4c80769cbf4cf84bd1559fa3cccabcbbc65d2b5b953ebea6f468afb3a6b68c3ddaad40b8c9fc2b26e16ad0731c17067657432a9140ff51b377bb139a6561e870f93e1d4c2aa03af5e8f0a310bb0ca7279e6a7551a983ece82b47550d6f14a708f0f448074b1558e522842e93a6e282a6ea1e83392364f324658663b92e5c5f5e4f2cfb1ce2e41e8973a9b8100d65731b7a8bfd430ba9eea873bbcd72040b334e51c7dd23892812b5a8aa47fdba864df7b17b1d7cb0299eea5e466d7f3ad9c0fa46d752085c5e50120367331cc6f7f69b0842e04af6f17e26f78d0b9e8ac615d092eee4251a5e92d2b09bf1aa844407515bb1a96e32a287597dbe614156512b128fe1fca6144fb4ec07f0fe64e91318a74c63a97f6286c34536a8018a63bfcc58e4ab5d55d6c754345386de3b323e7e1f0a163722ae70c9bc478108a3923fabd44abfad316f099b557276ce6a3adb4586b7671aa45b6524bc861de805733c4a901c276b144e69d59c2b3099ba7bf9a7355eee02b044e792adfa7e89dafea8fce002abd2750a5149566789d244ec3b2bf5719f4e40c2b3ecbe5ecea3a9d27d3069ad6e89db691215e8fc9d23122d741350840561a93b6baaec899ce3c542e93065d5fc2309d394594a05668d6f2fb73a736b0948daaa8bfcb7568023e7048b25ebffdecdec0a354c71c5e356f0c54d1ec7292199a10c7abdd727d3f0a4db3239f2d4e671216389b55eade7a4a3a50c716ea11036c55df1402db98afd4a1ca3b2bc5382536e7c51a32352caefc418c679acc4070d9143b6828d7d3c727c770123476e91756a20d413daa03a77fc00a6b93aeef5bb8972810c57da7cb2a5f57d13060d8d28ff47340fe0e5f0803d017105d9ce3e791fee3d69dd416a9a4190d087bd0023ef6090899f48f91a5f129cd37e328e252741bdcd49ce0ca2b8de141b78ccec2060202a2629995d43f2c122da05a9626ab5965aa9a6f9acd4af6c3ba900feefc2403ee966301819a1a61449c1efc14c7d9d252d13bd74b246f283c4b5f8972f9219dade3e10724cb6550c7d4d58936b8c3351430686012c7c49d54d58b67a2f357cdcaf9704fc4773cb4f4ed9fba89e0ba8ae07c992ba81b3d8c4645f3eeb758cd18ec02d1deccfb2a6b9e836e31bf846f7b8c517c3de4fc8dce65597fbb9332924bd5920db33f063acfafe3f168d7cd1f5b973a04768aa46dc83c36818d26490eb3ca6afb3a71df23f609a32f5fedcea124932714aceaeb9ec48d8d2db80e93a079185c8530c84d1a949ab17db7cdda444d212588e937cf5c9b047168b87edf705cc802f7648bd96d5a124c4c41cd2452ba7a41c501847e050b959c9c8f5686852fe3ae5579302c9f96b1b6bd8ef8751e84d996a3c7bdeaec6debbf9294ba728a0bd20a719c39884cd28b2903e197ad0368e196727daeeaaaa3094135bdb47d8670f705b593eaded79f9f866a98c523d99c81f618b128f483c5d7d1e3f41d86af8f451a121a52e894c7a22042a4f9d0caa85b8bbe4a5f81c8bad0dbd5288ff02e836b87ac5e7684f123822de4fc98802616ae1170b1cbae560209b4dde70fd4fa3743247b5ec5a8c7a78d2ed122158e8f460d4db1389654ca6685c41352fdefe2fe78edce79bfb90e5257543704ad8c90d91aef550e22495812d166160530735d5fa641c21a21343ad034c3f8bcc434e7196a80005a00be615d3cd72961ae507a6ee70b982ffd9032897f94ddb12d2968a74e00215c51487a5999191e97da50d3f45b92a62421fdbb7e88e519a17d2962836a938ce05cc4a93822eafabf69dcec7db3607293dfabb6304f9c14e7aad8f9dbae8e123dfea41ed5602476da8d550ad0356f7720fa4243dfed24bdc266ff214eeeff0953248beb375b7bbb4c506b19a47bbfaa2bb690d3efe16c6ce9f6b8446115d57371f2c3b67b61b8dfeaaa82e2e63d725f592c9cc717479ebd4083de890b3372a21b8c246c8f6b41ba06644cf9e4434300d8960af414bc4aefeae910871bcb03bd750f43fe229da7390e55642f93d2b8bbb4d3346c55d0b6e55cc0f425c952a9e0d1202c02f651e51d79c7e29d393c9731b93949283a4bb3647620c58ba91372b6b3aa471dd6b6e8a4dec608daf0b5daa268300f19ca1a050bd08e70acd7d1ed16aca86ed41858125f17d1dce3db0cbf856de0ba7bfc7d9b37bcddf62f89e57ea97505b3c45eef3bd056e64373ec323b9d1a45e55c4f6820a512c2d68fcf7958b3409f01900e94091e84810bab340497906dd4af218abbaae1bfab4b34d713652fa41ad462439671b78ca79857247c9179aca9f712d12edf56fd049b1d0525305aba1c274ca81942ec86fb8b7dda21385306799835f0c9f01d51947c58c74bb2bb32fb631af2cbc6604b4cd8ea69f330b126c49193634f567c92fc17ec5da07ad050ebd011db9d090692d7bffc45ed4edd13fe566e3ac743b59c25165da11c21be701368593a693a16ff3c0b35590616ddc912dfbd12c9bdda6eb96497069fec4a6aa08f075fc4c284d23943a3ede02cd8805093c5ded802d8cfe27bdbc8d8e075cf4d03e1111ccd77e06a6dee8914e34963b1f1d161fc5c3d0160df1000d683416d253da53248aabf8c70ac431898701f1da26179e4aa99bcfbf83f01d1a7be9da213aac710133bfb5450768ddf3340c83cd7cca4b13c53fb9e86f61445cee7f4057e6f77b3508b3838340d3f1fa95997e764a02c2fe1ec37a00442f1f1c71199e6a6c633841f019264b789cd15dc00dc98f48ea5c30aed4bc4eb83486123bb0b193dd96e153cfecbe210b6b02a878dda5b1fd1bd73fdde48088aaf549e93ff76188ba4f44721b0046d220b09357b5c1144a003f9752f03f0d9e9855bc7aaa38d743ac0be86a41c96d15d98cffcd1728c9bd95f6f9486d23f67b6402f6a56dd7761159c1afcfc3a6cd2fce3da7305b4ed7de5f36fd0b41c5a8d004d7bb5f38d78d045990b392682f60d0e81957b9f170604277ba1b5b8fa55f6984403821efbcb04080f867afda52bd1375731aab66c82f300c1a7816fc640d30959c18229bcd362d07ac73aa967e2b9e9f942358dd0019e4b1d2a87b1ef5ee6d64ef1f9f487174bb8d3734f537e6a7520c2e0d0a2f6ade52882c116c69c9b2ccec75790902e1ec04962db6e0a4ca89f4a5f90fc8ea18db8ade79e63946b8a7ab473c6a324de8736bea994b53b24dc106c2ccda492df870384b5ec62e8529a2041fe462b03597ee1ee6c25660099aee31643a1004ef739da64366223862ecba908bde6e0470a39abebc1f6a1fc036cbd737fb20697e9c03f91ffd1173e7dce935eb147aa80dafb43bac79f0d0f31994e178c4f2d48aebb2ee9192bb2dc864a214f7709a7ba785375787381d173c61974668c6de3aeb809dafc343e0a124c8b4ff57e594fee5d566fa14526285185c7bb7c676becea69593d9fe98c76ec1a53b598eb1ab24270df744226954da718e9d020cf7a0e3bf894776db2c83d895aecdd7be3945e195fd4d97f14d3c524764ee9142ce935676e106d6dc299b4adbc217d1190e66c567b1f3b016b069e1a2e8f15e147c00332a09250f7e7e6f0b1e6532879d552076389349db537629a2a673bd721ca2979544cbe50ec44fa0473094c484718c12de7223eb35d2b67f9a70498b7558ce839b223a439cf377eb70561830f19dfa8af08a6e312ee79a8185e718c7303609efcca60cb2f72eb68a2f304e1399ab5fb5127734357b41227ae6cf06e7682a0ced85a81dc8c8d567cabec5b296d25c66c9539202d341372cc9d685b8ba615037a573641992cc721e46bcdc530e7e9bec4a56e20db03933e30f46cf40ed5de48508d6641a9cec86c43ec37fbd065e0162a99611bb28418c51b94910a973781830afefa0c5be112467dd0ecfdca7f95ef2324d80fad78f9289ab420072ccc3ea351a76d8f57005136109df6f2ece4702886161827737d73f231aec8432a383fc7c1b1d512e4f58e088864265289f2c818f0289064c94d3b186f01ccdd73ba03fb989914cc3c2b46e633a5d4214e5c36a55a76b9c94b794d047837614e5eae486060750822825161071f833297185325b6e01d282f160d3bb69009a5e09268b465afab2f5c99c22f9223e918316fd1c3a778ac18f893f01c429bd504b5abcc4fb53a8d2e04a0f0ac7025ac4b14cf91f8acef38a2754b0e397568d6db83e172fcdec4af90fd2ac58a5e82f7fbe241f1b8131d702d85bfe870ff1591e79f6fb1ebde27469d0c1b21eb6fcca688bfe45d0e3116a6c2485b5cb327a282fc5267e9bba6282d790baf1b166b47408a92cee50640f0812798c6efdbc5c9a41576e56217c404f1cb2d02bee044d4689239300f7a9df9559e4fdcd96ca464b088221029e29118c74b11fbdb55ebdc841e9cf64f370e5af5f81eacd1259738e643eee815a3837d2f412aac3cfc751a5ace6f3d97ede56109bb2cd366a6901dd0e3cbe33037062c021c0fa887f28aa9306c03b27d93c6a518a514f235358ea29a8d65f80978ca98a33cb474be1f451bddeafd7c09c5502df1b50de731fce45814bde074e97ebb87e234d05457831affe2f619538d578d21e8018e9d39068de3fd1db52181fbf315bc1869c0899815da33a247448f5768e1d5fe16d758536901de2f2b80a0bc9854536936fcf39edc3052ea9831e30c6da28e933ddf2301f4cc4d9f4e606775e7fdf8a02c6c1a9894b89cf017f960dfd1c773b336e8426a38bf6fb77c198aff8bdebf4c908d671c62aebe89283683487b07cef9228a0ae75bb131e8e38650e35ff251ca0c853f681489eb0e6d4ef45106ca705ddb0715ddda597164ac0fa884f0fc6c43984930266023063df7f0f7c33207a1c8203e679beff638a37e0d12a41574b38f7a2ed82b77feab9889075ec5ae5fd6eaa9630f868e2408365139d70e6da5fdc86126b689b77120cde7c211d8cc160110745f882adf13f937879f865c448b5422a5795f5f563d45cf0e5266f9b17a2ccac0ed6d7f833c46a07622ea0672aeb3daa75bd2655fff7a4f9f7ddded9a47303447b27a1d2bdf366323595c13dcbdcbd21373e2e732e6be7ae3d11afe190c901e6465c8f08f3d1105c286c7654795d80d8c09faf1d5d1e04de7835149cb67d765fb7243f31bc1c51657d8355b640b9ec3d8ce22a9e18ef268738d8b105d5f20b4a3273156a124a156ea81b8f6ff4e5c7c78e8090e77343baf9168599b400f3b8bce03b5a01f5c2574bf7b7220b3ad0942f8b38a90db46bb2b8ef0f480c9f1ed242d5541623e9ae970d877998bbe9bea13d621e8176669a8dbe7e07573cd1b7076dc3b8a8d813d6078d4f8f0ba5d9ff2075220b855241b0a18c12e63aedbb2000ed5d97f725a5cc865e7d18a27f3875f1cd54fe6fd5b4d7297aa51b151f2f5d222ccd171276cb5d45f4c96ddc57d6d48a89820b9732ea97601d701cde4fca8f10ffe1f42aa6b6b06d00e4a0ce06e686fe397baf4656098c257a84b9c34a70cf00378188ad2a7eb5624ecf113c35d053362cf625de5dbcb96ce7c71c33ce720d5ebf08d7cccedd6a5d3deecc5f86343b0a1065ff619bf453653a5e4949bb57568a30ce3efe81fe51f7bcd55d27927dc2b8db823d3b8d515ce0b2c58ecfb7d3ddc376fec7ad033a94464cc7240c254760cea2e887183fbd285a5eb93a225f21d36fc22090c844f12b4159fb4cb64a7ea3d88b74c3f8211097a5b10fd6ef8f99fe14dd7590149c4797a63fb2da91e60f8a7cccc7c37cfd8e713b705cf2aec001369f4a0e8cbb6a4c95d56486d8b638bd0a53fe2d139ba0f04b5593a55fc02dcfe74d7123a7024c9d5ca17d1fd6119b029972953a2be2559733794d8562a420140a8f927bebb3d9ec38c37a20b4322745db846f72a4b97bd55164be1adb11544be98cb42b6e914a6a2d79ff5b621ec8159c46b6aea6a5ce4a1c79ff693b258fdecff4f1c80e8a84b078f4781b0ca920c35a31026e2acf384272d18ee3af9468c434f56442fcd2d45610783c50ef8ea085e1029e4df7166616fd1e54c79de1b37bb43d81c17ee858e669f8889e6ea33cf16457bde709d2065875a585b7078c27d300194191de2fdce0b48569a808d8fcf3e8e198bc8755ebc7bddefc8801ab924292df1ce09aebca1138a034af2f0d624fbc84c4c6f041c73a0c0f892d4a3f6fdb70592b81b662e81375216e623dcdbbb2bafe2066786eb43391487593be5487c14f7cbe1077e4dd467fb58d7746f76674dbf35acd0f1954c94602417504fdb79cf0a7f431a35efaa5806e0346a4e2319db476cd68711f8281bc4939874d4d81f6cba2218a53f2bc8af9a6dfbbacf6fe42cad243b1b6171ea0aaa520029d2d46493c827ff4c770041de60f20caae5026082a1449de22d784d7e41720d2383bab24370613c5ae29d825ce0862c04ae80e09a1f27d3c66d2094e26fb9cd66dd61c03bf3596fea621cd9895b9ea6ac9bc088c3110bcc5f39254803fa118a5304df8603c18bbba2344fc48aa1379507ecf4cc5aa0ebea0252a95e83532fe8e0d6b49d226bc4e1a4ba18b23a3b15598d9580955e8c3150a6b2a4f2fc663ebb28f78f8f9474a0334c7bc75b711f87bd21bded27e6f3763c9d03b76b5c1eeeae530ca29ae27f89fcadf68aec70b203ed5f4d6d9b678c62355204c425c50cfa8afc3ee8137b79890bef378df1c2f9843ba0061eb9eb766914c88a5e630132e1361d94cc8fa5e95822b155b127020dd0f80ba890adaa1e1397ac8166af7fb8351dcbaf8a6207ee8860aa9d9e9e38ee8a3c5110d3d2e06c561555cbdcd3abb9827147a2f7df80a8cba7abf22430dca7664af48c6121b80373bef849be273d75031a2d4b81bf88d17ea8605d60b8f97a027feb2d1a508b69fa6bfad8d35ae9bd298ed60400fd830012872108c7afeddd95834f983d133fc9a66714584cc0a19381328c9bbaac9494b6a9ab01445cd82f5ef10939ca365fe45ade4cf5d5ad82874b5a3a44c789f84fe405d9316d7a2f1b4d090ac17bf4a6281c4211ffee1a9f0d7ffd9c47c030a40aa0bee60f016e82ad51a86bd1c553d690d009f8193ff4292dd33349c5f7d148a35260d676f5caa357613f595c059a10cf6944555cdcac3593bd402877145d1fdca45142cc6191935aa7fa61ac2f540d8e27ad7759ebac97f2d14a799ea076475a65abc306e50b6fd65f4b495d4d8d59ab8408186d7605fe35e449d8a7787ba2185dff3ea1dff37cd053442b0f776460b3086a139c04f7635b40c22fde76ea64d62e62d0536f4e2916d226130d9f11087149d29f1cb1a5c744cacdb0f3244995f079a3c3e1c9e58667627c68dff211d9ea507111d5682f820c2d55891d4da4d6a2b3e9edac5fabb81b2208b9c2fbd2208442b901b4a73f4d60cd24dce608439dc270264fce147ea4fcbbc90975cfe42cc005f78ea9d0460938566269dd77de70fb91fbf906af0cc56962cb326e3080fd547f0c35641f4662e6e8e330dd1ddb2c7283a370372873ee9f253de3ecdc674bf8e768c6106e31542ae3cca0d7d62a97d24a849ddbff51b92f55c22de0f6705302515b5fe9a9916d61f1a73d6abd0402e0c76b2f0c5f307fc9f2372c1d9909c8ee18dffbc36d298632d0c34dd9ac829af1314722c08d92e8946f267c4a7e5f9c7321a42b78e8cd17d5e9f40fd61e6bfabc7bbdad95cea167fb75b8f670645ac07971be294eb3e80e0c01b8f048b485790324ab46d270070b79e8554cb131da93d88882629ad75e081607f94b8742a4de4d3c4a176588e42b5f1509e598a5ebe8f279522d26d7b99d34d0bb13522bf638a65373111aafbbb8e0957de2acde4c80100c1bdd5ae769b9544511bf0ca0d83f1b61920d2a4c639b6ba09693cc715b0bd614c6ab0d66ef0031fb68121ff1296851cde221fa829fd601cbb7054d7a3aed1efc508c8a988736ff7d1f16307a32a2a905a6c47b2f19ea970d9a1c101e2eae981d87ee0e3377358319de822edf022a5754e67a9f2e7292aa7725054ee754b538942128a453dd1390cf0345663ab4e3fcf48b9e177d0db0c4cf62ee5e17b5d0d20030abd94a6f50c88d47338949b9ff99697bfe54168450b88ea7605c7e30d6c75f32a53bedcf3d75b9deccc24fcf52ed28334af88d2c59c6df6377a77f8843eab9e04857cf396501b04cc6cdebf250a796354e2bddb41409e30b9db6a97feb617217af2eae067843b6fc1057e2e03fe3085c871e4e2496f270251d6c4ec6402d9700e3b7eeec2a286ac047b5c426c172fe2fdfe022432e6b2eeb2ea629e3c5b379e6105bcff96632d54c40fe6e51c523d97196a425b5bbfb910769a32d3fffc973136fb83827cd16df14e8aec42a75e70d082d050ba597780261485e7fcfbda64639dbfcd771a2b610e79d81fecdaa1166d8f55660a862275b77645ae751f9689448f72fb19b642e8fcb7e5fe96241095e3976d99326207bd438f95afb52c441db7966befe9b7c7b62e20ef259b60a7af00a245b328629b10f1644db71788de4d961b49ed29110d5ab96899a84df351d3a0925ac644f145a410c797d5de3082ce84b16461389d3daa33d6e63eac95b6b9d4f2928d711f995061e0ff5d97f0e4455a12672f97533eccd7d762ef7ce50cf159d4a9d8aa30560cfa383c974515123f1cffc694dd8f573157604729642f192e265beb027330484bc363da7f5e281f34df647372c327e85363da4296d7c9093890fd7297d33e47257505c119da45bfa75d6553d071b04f3f83aec1815c5a26dfd0a562ad5da490cef9aacd8b400a2186cecb8dae27645232cdae2c7fa9e500ebd0c9b076db2f1a980fd302c60b1fabb8d03322b081db501b6ef4f9b9da5db2afed1b98ae1eede5607e184fe416d8e1c69c5ae9489df00ee5e3b896be87bcd7a4637f1d7ddd7a7ea16b60879b8a5ee20c02f591eb80fba43f164925c39ef91b1dedf6f12447e175837c1f80ab562aaeacb37c6de8c9016ca3da1d86be08423f9933296e2f66595be1bf1f703aebc66ab93a1912c89858bbfdc771f563ab6c1d2ccfd71e206eb91f78cfe0fbde217c56bd06fba33e0afdff7372201df705d434a3e4e8899dede577ed877049a00694498fefb9df4c63ad46f590c4bdf638a54f98707bcca263e6a5820a6705248c58d97617677188422388d5a5a7e8c58cca43b37274555d300dee33454b7cb17ed052a7bf84e28258f1baab7110fc34338093c854f84402658b78d258c7f1ccfa5120f1a5977069bfdb4cd1b4c8694cc19839f2188b1e6a57e1f54e1c310f205d009d76f1275edc435ac0c084b5d002e48b612878ced879051cab6d2b0ce9091cbd6783f7d56325953edfa00e464248155e4e100515ea3ab9cd22bf3169c6fe1a7c6f49b3523597dad96a9a758fa67927241c9eeeb8a7e3d43148744590deda542da2601e9b5eba01c6bcfabb0a1373be1c8c202d311639ba9f1a2aa4c26eb01ba1557b58697b1a4813ecbca96fdd9c2db06f94b108664cc2a91adefa1779af382d65d176cb09994c069e42de9645e506f10606a6c20ddfd5bc83e223acbd0f761f4dcef36a19cd5f9aa11e3790c0b74be6649058bde2e0bba24100cbcc91cf35c50fae35b8d35221a587c5762d26dd04a87d13f4e2a0fdd193abc737634e5583b29c8f6e21f362356b097a8c2e0a5519aa17f348c5f59f73c34f70d7dd21dc92a9a041df6312f0e5f926769c9a5fc1170bf37bccc927d1920c457f1d110601d9a4de1339ba7dd76309bcf64e4ec67deaafbf155f31a296b8372f612090447fb1515109d04210cfc69b4cd803fb55247a054a9347049750ed039605c2499b5f3d69431de4f46fb47130b07021568b8e6a0d486b66721621413d78261971fb5d4f59a7480a6ecde270cfb84a0fed84cd7c1953ddf840ea8f58242afe9a30769c607d2324d9b54909884e127dc7aa195b38981ad5db11ba59ce50f97b4c006f2a4d190ec06f50194ed6bfde3f114e93e0866333421cce0b9ed8ad269d0edc8f4da9c573ad43b04424d697bd6e7bc4f2def6db48c73aae5c821beddbc9719f479df893e9cfda0b9b2a11161568842a1fe8df5b099a9ffaa6faa0a3576bdd3f64d7c9ee08304a3d9000ee5c4db07f3ab6d6a48f25c3eea2693cd75292efda47c659ef58de10ed58715c21f368d0cfbcb769285c8fbe52b9191861abdf2d3a7a3fce99ecd12b1f0ef08c9116851fe6408528cef69cdbdf4ef52d76f8a8cc3b01d5f73af5615a93e3f48a8df738600dcf76c1ebee692fede12336d4bbe15c9b4bac062b0dab4a6af36eb20362cf57d86db866da4c2f836726e41906d258fd9bfd2d8f701c8542d16d9830036259696d40fcd19b664e52ea5e435f8443c463c689551a9fdb1e62676c9f603bf52f6e1fe24fc1b98572fdb9ca60dee42f1755fac82c581b8bf388864ec428304ec13f4e80e9a238ff2c5da3ada4e4b95c7c65d2c96b1e0e1f624628f37ad6869460d8547f26947369cf9c28a990f8ef5b0b050835a29ec9838d853e2f2b7634f18e08631432bc31632db6766eb85ada832774273b116781e2e69511154b7333a6da2eb8b825682e6d22ff9e7042c9cf00f3e58d6030897574f8c813542e386e6049893b9cd4794d3b0f5a40acc7632212930082a92699a9fa1a8f31a1b551d65116abb1a1ac6dccbc3e4e7d6679a32b76d7022105bc8224958e71e8c90a9c323ef71d3b27f0445d238a4f482fa1f051292fabe5ce733bd08f6774298e29363830520757a33bbcfa6d424ba7d9427f417f904d61e77582fb08d501907cef79fdca82337705243d20a52414c7e80dd4dff69303fe6c536144d7cbd2d4b1bbc431c537be550358d9627bf7aec618c763548f84cdee3904f8da57a2702c9e87d39e9dc1a9943ded864325113ae3cf3af5d09afe2ae126ae9492e4c6546520877f67a209e346ee7fceddca808d86fd48e54fc8465b808666cfca2123efc046a9fbfe672fa1a8e676e44398fd503558c8b3468bcba419c95725ca7f54041d1dfc0daafab871f9abc45058f058af426fdf35b0c7f73223e1053f95babaf0051d99efdfbde17da2550c4b0065fb381a76ea18bab5ca28241b4399364d0119e4e412357b07995e502a9de13829ed1cb4fc12d3ab0269bdd4d941eae8618573658124329828e8609747c79922d2daf969c3d4f7ca91aa03f4d261c77b795518a0f75ff18286f4f93a89602e6d21b39c6bcfbedac0def7d4e9ccff9de7f6eadbf21e8035403d970af195e048ebd7ff963ca47bc7fe4dbd748eb3c1e14856841e9f7b404ac2caa45e95296d1e3ded7155119e1d1944fb49cbb23b38c7506f2e0489bfd5f99fa767bf52f898212d5d83774896bf575e4a7ce24b9c64e3515b47df6ff4e999d97328148f2f9a6101607f3c87d6909a30957fec16c53b874aa89fbfbc887ce8b8d39a48176082f4f3149c712c6b50248da4a7b68cbaeb026f555ceb43008bc93b9c4445d93c32f27242bd6d5157dd80d56fedfabdd88e3c98024360d36d86ed04da564ba7f755fbbfaace5449b10b01be020b0407a22a4097b926e53d918f4c6b0e8a363a1b4566599da545ed38ca1b218e3b4fdd6b3b62969d38e624b8b28c864a533f263ff161375acf5a233b24bfc564d94410d96f4cda1f49b3b9249fa969af02a8c3c1fe93e75d0a8c3df2a2c60d700567458837b2126e78536eae895448aeeb9676cedc7a17679177e4b0ac3c958deb21578440bc62302095031b08d67f5fb41e556739e2570acf1a6e4e9f96fd9b7025ca5fd30f04cce3353583edfa6935ca072216db6587aba67ba08f9925df48d6527a8475a5c51dcb0fb134ef5dc6570564b22e0cd4aac9966507fe005ca2283bd087a960d8d89f5c8d9f018f3a78fe59f962c7ec9d36949fce0b85d7737bfbb0da3fff06fc3bf26b2f8c4c444b38caf9c7657de7bfdf6f1c5a66b782498e6d29289e917e5c2a6ff53425bfea58d61eae584c57d78b77af98a0a1ca35292b4ae07f4a4ad81504df10a6725c6f7405197bff76f8aed99a1c9379722f79cb61803d3f0d11e3972608c0668fca1250b058f0310c624a7a20620abea970ae3a3c9abd8f5c1369d0e10945fcadc27498e87982a9c0f93833e8b2115bc4b0c6f250cd46670bc4b1b2fcb37ce62166c6f7209f1354865ae385b3c390882c12056bfb919c5069b693246ca9327e34a017113062df1c35980ccd1ec170294f983fcd2b51cf5175749e5d966735c1c7e28685dffbccf09860cab73a2f449e575a63422a528a9d66dbcb5e2204c7c66e468ea4c625757b29089778aedc6eb110b3ee0eb365abd7e1fd209e5e4c83ebf1a40c1ac15091db246e3ec0c579c87be08bc3c6a87897e714656f862eee47e776d4f78518af0795c1d1886468ecd4904b34a229b9d4fb51e1238c1fa14216ef2d5540012640191cace992e87a173b2a64fabb121edc7abbd7fc15de962a7b07c7bb38a68bb80fc813c5ac2f8ee6b8a4a04e8673ef38618ab3e3bfe5e4434587ee48d029f25787adea2bb0a801aa7852726da4fd85a7cebb83161d05c2699d482571aacd7c52e34a7a08017e874fcaba44968bc3b01d0434e31430f6b8f320f93358d021836f1f4acc75a31e9d18dd726c545f884ce7b1faaf9d485f2f4921356fb7f6231e407235bd549a89e722fc76c50f8d03dfdda01c87b808fe81f81953d5701b320adab031796804fd3806552e8ec7ab4f60f54bd3860cebe279519107087c33bcdb64adabaa925b39979fe54e108a59f0324c663137f7847a5edb5bdf4664dd942c4104967f8ceaf6074788b93b432b483f5045003168c1cd6f76f4584de6b95d699adefe66e5554a34f63d36a4108bf5d596f46509a3636321523f77a673fe7248f065a1ad95436c7dc982223cbc7d2265a16ef8cb9727bc6248c5a31365fb3e4781c1e23ef6234e4f5d5c54d0d6160a7c6d42ad3cc7622855f80e2f6f413a7bdbed6b973ea75b9a44dac869edc2e9a6c335730c564545d444cdc4d31bc23e73f1eabe5ef671c829839212f11af4c7dc283be9982c94dd56efb1e2cc2e70ac9b299b8842a771618ab91e4dd67291e1c9832ec1558d6f188ca22055984ee5c39f13d6c6b255e75b995a86b3b6c70888349e4a1440862a7f1660b04938af90333c73a2c11807ff7de4799ea012ed99bbd1e214fd5a041d6224bc272ef24d4768eb37cbee5942ba363b4052511ddd111ad1aa22a26048676fa363fc304f6a891c98fb74187db8323cc9027ed321b16000053966c59c58d281c06ceb90447424aa03aef8a76b8a6e9d4ce51745ecb103d88e0bb28fb24184bfd2ffaf1a912909060b9c218e0453ae49990b23ea9bf58db60e287bf3c94fc23ceee07ba46eed1a4b86656f95d83a6ab344d8f84af28bc6108e6d0809e43f60bd839951b2e7c881e1f59154955bf935575eebeabd3db838d6de7d1c7fe211676ebe496f19497537bed1ba54f512c6936da68ee4bbdb804ceb140167474c5c16cb435d530d68602308851f69ad3ad42a93cf74e5428ae82d4ec5ed426ae613995ed46c9b55d4d71b546b2877d671eabda2a2fa95a30fd4c2a0d381ba00a5358ee6c230194520d8704c9e61cbc63bd1efd4c3ef3e3c063e2dbc884680381155cbc5ce32b0fde4a2e99b35520b09f36e4bb83550440c95047ede05bca7f55289e24f00002d81950ec59440cbac0c162639335cb7a546320305c032c19f064f27a4d1770d44c9a1fee86dbcd8a22656c5ce4b2eaa5f0d77bf3823d3e75e91043638786acaa3bd3d7a529bd2ff9732a28ea198c9329fa11138d79dc4844de1421427a465dbb0c746b61cf7e02d4d4da158f877f18ffc882c596e165384b6898011c5870618402409c141ce1a1c4921d2e7bdf94d0c82fa734b867bdcb20f3a73dba687b6a2e195cb0d63ceeb7f167e60c58d3d4dc0f8a4266bf69a04c6f4bac58b4867d4097aea6b501ae615154df3e5493e2f01face94e3934122b7c4c096e0ae3f3c10c5079f200dbf559f7d724fd38816779355fb4b351967b1e55ac8acbf6b9518e2ab1048259ac376d32afb76f5446c2b90c53e36009d4773a7bf16ad1164c68b75d39d014438718be064704adb68dcf3b67aaf58129ac353956d41d87136a1351fc980b39a4a8ba222d9e92cb2ee1db7362006766f842601dcc6ddfa9410ab253e9eaa7257c71e964ba5c12f7d8ee7549b73df2b50b377b3a67be1625cbeed0ad8fea36bee33b348e186a1994a6d17cb20d94a4dac01b3dc645b64d96815a2a66054c2314072ac71302e0a115f3e8ea68db9a7a40254e6abacc2bb4aaae7fd469df8d11133b2416af9dd390ed26da9d7a55295f4fca6cc2bc1d4b38a5ac2d0776339be4637b349711639225c6f99d03eaf231aa182f220fa7f9190959c53a249b4b5ae5251ca4cd4e13b6a98d34b28d90dfade05ea2b48773c3b17819dbf6b0fb1996988d07efbfafbec530b6a7578ade669f06c4efbf0271542fe1026ab2b4d8d4a86ebaaa42dde94110d43640613ae73db867591c5e57767175b5d4b12c4238c2a732e653bd39fcd0bf8e21f7aa18353fed6b77aa4d8d1f99e6eb9169e3b392a2d3f8d0e538529ec49c44f8792054e9b46605419d13480a9d4e8028862c34071f731062d5adaad688f0224e1c053969fda0a4a19f536eb93123229d66a898b3cd0dd0e770bdcfd62f12d96eb10ab0aff1521671fc7936e8c8a952d857cb09253e645d5792a2608c535f446d483824bc9ed1e20e1f115bba1e861c7c6d9817c5dc108410747c64edf76e14035f9b95d1d81d601e836491e514fea1a2e89c9e5c056e3d0ee3e7e7e021374039d359040d832db1c73b0dce77663583d4302ee43187f3cc9ca0ce61aed1e55808d838eb975fd97ef089c59808a3a7b33c79320cdc423e7c8a0563b484323437fc828c026cdcdec297a7e0e2a3797333f1eea623874e2411e8494ce112b1a9fdba84a6a87c50c7f07e387f189f1e34ed5e30e72cecd3f906251a72057b7551a49579b5903e82e2c989d5abadc69a653c9692f5b3cfea1b6364cc9b5e8e9e27a6422fd7e2b67139826aba05ee6dd19ecf2a76310412c6642d69b95961313ea337de839a3f0cd8107d267cbf8b0bf9362d67f3346e2e7e0ea3d97ef47cb4a5f69ac6749bac89fa012f2e9a9fd85d92a6f9deaa59a2c27564daa744d649fde9b273b7b920137e96a9f60593c4728a8f9530f9a6386aaf6e35e9022810862d9b000e5599c9ab8d3187999952876d2f68838133566e7fc943b533de955635bfaf0e717f4f19c2808d054081fa52519008a46efe8cecfca81bca55ab5e8bfc0e98caa0520c7ae61ed78c77fd72b28df13cdaa334c509c8aa21c60712c0dfed53c113724364a318cc977340378aca3812fa814506181b97c7e52a2f911e0a16ec03469605fbd76f4b296b3ddead4fbc1de2fb32cb37b5ce959fd692d3de887d51715f20228d1382fb4eeb0f7a37889210df3e2c767c411af6a4b786fe97d7ac0f6a9622823627c7c15f7dec62887b126561edc13cf914ca34b9adb3ae885c7172c9ebb63be9c40a82102ed58c2c68a21472da5abd1ad92e0add1fa85ecb919c8e7185385e881e65489e64f73582782347f8a3ee44db5cee8c908e87c07ec97b39d6367fbe6266dc84ee5989d2272fa59e0d1629615e6bd874dc5d45b7a83f80987e670f2fd4acdf0d251c17d68909428005572aa061fe866ffbec3ecbdd7b33361a99de38e8c71652410e7e3431e9fcad116c33cf446b79d02f919d77225291d3b3a45e4aad24f1c25802fda49e58afe95b87cd3949e4d74cb4bb233b47df0066c3a422665ed9ff1475019e1a3d1b37fd67899ccadb10d639e7be72afc7dc1350dc05f1a6ce601b44f1b483a36d61b4d09aa7fc556b62c9363bd553cca88f1087dd5ed74569b56a0e5dd2f29dd7a3406dd83a9be3028da621e8135010782bcb764239f1436a9f3cda1a5cb2963ab53c049bb9af0f198602d6a87c32ef24bec2f6a1c94b2a730fa410c97dc5fdf7fe3256a33939c3d20ed5a088863113bc980ef5f3df13f64e8fd9b3a8ad6500b55edfbf34b43243d6a396d7faf7649299df10f78f13d181a93ffb481af2bd6b695795575d19f5156ce38c8a7053e36bfe09f46717f678b2ea69aa89fdf530e346fd5c2b0774b2f5e76a8cbd676acea1971a9344e49b93c9facc69c6bd098a0feac6e1ea81ee36a174d6799b403d3ecadcdc6ef4beb5d171e712102793c3a91cbc4bdbe30dc96c895873a28021cdfa615e419362d07ef169b68f26206f8c93683bb8dc1516f308b71414a0139baaec18375ccbdb143fd3c0892b0f65c93b7023755144fd4daef9c35891adebd26f4ba28a57e3bed36cc47901bfe557fd9ec8c1b6789d14d85bab7d7fb1babb5eadf803efbba4def1cf23979bbe8b75905bd7638187e4e1460dd330aa3ac82cec36c11f3832d8dd9a8baed25a4ffed9f098572e5fe579007fee860f251d72a7612c1ead8f5097ca55b63e89b95fc1ba6eef1948c0c0aa4d10379cc10b29938b53ece58cf54c075a1a0dec14e47bd42da867da5a0ed2d56dce5d32302581f8543a237282b19f38a29d61bb90618fcae67d642d4b155a71ce359d766181b4a48aaf92566d2c58c9cb7a2fde05e98a9c1f3f1a440d6ac03cbb90cf54b6177ef4c7f0603509901dceaf75d2bcc4c8fa9e05a3e92b57f5b42d300475d0f122ae0380a0de6adc57edeaa27bd0b453b0ba79f37dbb9ee85f51455f5521aef04aecbcb53286a73412684c0ed03329721761ff494a5a693c2a14ed155786bf74027196e72190c1ca6e62bb8d5158b411bee1f6a8dbc7e5a9a85f7d655a6e2bfa013935c8ebc0810d006e17db8189682af5b5b556a9a68b0b71ec0f0433fa9395afe1b7c76a596b6f498e6e056aa5deba2fc583bbf5f8518982045596990f2130f4530ab456ace8ed112609804f1f01d12b8e5e4bf1005ddf60cf738835d79a6edb892dfa213a9eb3ab8c8dcdf399c03a8d1ce1931bf60dde6b4d93f85fcfab7fdd2bcbfc11e186f416a3961f7ce1e3be851131686395182ebf44fd3dae8d1675b6c34b5a616b29080a52f62ec1e010ea88dae1d37844452fba7ee5a389cbcdea8fefdafa34b7e678add4c980aa182ba9300d96d2cabb377770dc6dde3ac115632c67fbe1be96dc0b4f209bbb798f546daeb56e0ce980cc51eed1cb3317c67d231eb5c8e028645346a76934158be9b3d9782cd7d6e85c01d7c5c857d87e31d3137290e14de7aa50853ea9803e7646dcf37032ccf25b66be569e907f4e0b5441f006491d00cd64dabac80f0d9a0b8c45d410f923489c0f15a7521f401614941ee7b66c08be121806c47da878b5ae7712af92e99ca7642d54e4f15f1a6332d695f6abb970d402c7430d09634c55c5957ed3a5ad457f248b4f92f901ce996671e5dd76ea60fef177465e5a167ecb1543d21f6e32fffe042cb0d83035f210a93f385909663bfb88e294eba27e14a6877de151a2aa1de760e5574086417f230511ee2e8f1f02fe02b245c2fff91165bb584733cdaace07ba82909ab74053c58956a8ab705af298b179b8030fe3da2d683b9ed80117ad230ed3aa59240da31cb61beb93f15242253227a192551b28b63d26114af09a7f408be707f380dfdd8153afad748d6a476586fa624d3880947256e10bb945b38ed4e864719251875dc927445901760871b4c130bcc3637659daa32f882e3b33a1c829c7b2bebdeebd47c1f8eed6a420fa926ad2912bb4bf0d55ba96a7cefc5f789f6b5a7284ff9732d5f7895dc9a64786b44c0eacaf0a03c95c2f4d933c04ac1fe609e8bf3ed6e2a5d7c7613f7f9a8013c25399c6380951ac59905d5212900405e536563d4a885d268b97369785d571b579d9fff39b4081ad2a8b64cacf850883fdf0eb52eaee4a0f2e780bb29c8d56f9d17d4eadef8aff103e168d219fa720a967839ba0e8e7506b3c31a545f092bb9d77387d4ef5314bea21699c6c343f0cff0a250f8b390ad5fcaaae48227e423c3c4c07618bd6dc72cc64e8cadc8c29cc5cb7b5e9a4d25d41960f974df9a6647020a840b74e0db6a6a4c99e942d01d2e4c24faabe5661ee1bacb42ac489435aecae613f1ccd539f405d8fd54da3cd02ee81f31e9bba3a80c58961ad3e724cee2ef592ca5356e764b60125c9fa2d3746682273cc4a443926d0f034b80d861058629607563405043e7c753a6acd46653f873bf144931f7f5d3d9cd0a5c85d25cabeff33b1a660fe33cfc20a6ea3e6514dce054da5e68b309049df54cfc3bf606949337eb7df69242003803b6c536b1f571486d8a25198b1d8be36f44b621489c84a49683f9d5fb6c8c0eed36236dc6a257f2a06ed4c2b29440de5e97de53fdbd447aa80eb5ebb476df1402a1f0648e5036cc7d1657afe97edc5e51e138c6275bce2b8cd7812b051cd483a94b9d61115786a00ee455ced74b03730df4be8cf700db20c0aa75fdff672c9c294fc6bc946c53d74fbf4faf4252beb43dc0854d6f2518531c6569670ac136060d17a3ec5a92d6b545bbb5ac4d54e69d50ec46b49f3b8afdae7b950699e54a0079bdeb85fa666a1a974c70b6be0879fff6e29b0dce984371df906881b4ce3d55f331e379b8b2a8a6edc0a008c610ed0a6db1b37a2e032878ea8ff924ff41c6d7ca18ec302b65a7bd93e0352f9a0dd2c85367e5c4b16868fad2d630881b45e63af4c93fe1a29f7cf9d6348a77b4102a617ebd98d1f289bb2e443f819a58ff31bb513ea3645a229be72afa3bbced4428b45bde0a57f68300950b28be95dd52fbfe1dd82d85acc03cabb3019c907270b47c99cfff0ec92c84c773212edc3a77459cab5324321513994cf053914356a714e03bce5ff4d62db29e14762eb660f219085bc13634f173346f1336617b017eccc3c6b4f2c9a93fa332e3b9b9f4280b0f7a5d9558ed84c3916abf478386c3585878f690e8b766befd9a55bac7865f2cd5c466acb323730d705acf266e26b9b69c7c4d9f74e0b0bc5174351f1d48e608785e3f827038426a78cfd09a5b285d11418a710456ec307306e28c4d09fa092bf785b1be143b4351a474e5bf8c8eec18bcd6a5c4fd8cddc3e280fd19299db629cebb42028196dd29da29541380d7d48445f6d0949aba11d1dbd2837290acc225aaff65a3c146725c9d4f1728deb5c048aead85a8e1bca56a838d3f895da86f4709ace46e4e35eefce5efbd3456d4d2e2de220b948fb64bd0951dfcf98d3dde4898da72a5a64dbe057d701808ff35a7f29ba41c868a738a20df2b6b371d34842835ee3d532bb7fe7e44b083524ff97d6ee3e1bb9100b1a4b1045f27321a6970f983c8de067ac5fe1e1a8e9d68e5b36725afaf973663f4d8f05ca3097146b2bc1119a900ce33d33fdb132c3b7ae29dddc1f0ff4814c0fd5aae13409fd103b30769b605788fa15d2d0e92ffae21f93073ede76cef1da7ec554b0fbc30b19282007948eab1448d80ce597910a2054dfeffdcf1cd7a066221cb7c932a1b79827118f03c46218901f78569d8543614d365eaf0eee6f7b4d2ae1143070d67f89401c5dd832cc2db6de57c5c59f931d3ff6ee7f0249cd67903be0cc54088e200af016a82faabbbeaa6cd22c31b64258533be3475d37b5744830c43639c13f6b974ef83175e33548eb5a6fed12b9abd58fff943c1e66693839c7f4adf5657a99da90643a071430afb51b23bcbda19cd79f3a4dee8e25aa9a5898ff352db5be295947fab3d74881b90cd46eb9d6a27ff0ce8306c45f4223a45268637abc9e7750ab7f4163de7b3e182dd9b54636266c9802b6c19ea5ed3dfa4e7c24bec3b4ab3a23aadfc53f2f80ce14e0dcc0d28d45b2d70690355ce1801ee4c55f287f94694743d88766af5ac8bcc6dfb67d895f44675154b46c395c907274e8d5a7538061977ead739d93eac6ca40254e0f3106da1975a6e5b5a03bbcd09fca5c360852480009e7400a8d9df1509d02cf2fe15364a469fd5ea7b46e28b19808782bd2ba1212111edf16c443ec385529e7c6b6aee92f57c3b46d1ff53f326b1c7c9bd6922b8164638d8c0011e955edf8d71c70ae8260601e2d70f5945a64efe39678b568a661fdd68a86bd4e76cd09c5688c6513cd4821872ca3e7f96e8eb0c3d879bb4e0ed64bae7977d716a191a99f764cfc58c14c68318eef36fdf52cfc7d02ebad9dc937152e3e9f164d1e8d56d14f23e66fe67c5dd99e42ad8a816a1d03d35249027813a2cd4da26e9debed47bb26dc5cf85cb82dfcdf07149773aae8b61236ea94c3bbfaab161de2d3512db54972ad7638a9c260cd93f17bae6de0ab969a96be28aabd4b9f4ba2499b9e1a57399f7008ce278e01e60ffaf6a92e2cdfa96c853525c3a6e084021688ddbec0d6ec991195d673c2b20bc4044c8f9038414f1451cebe222616caa90c632eb9642f7d5024f42c0c9085d7c21e13a4fcf76b8e3701091b1d781ad78e8fe50a389b0beb27758a367db864e0f27c4c74770a382c5ac1f73190080cd589cedc9862931fa1515b0e788103fadc37984aa9d8f8886e922f40932867a86593554f7304b7e981ab7f7dc9d8cfda2fc5172adccb6df7c913723b8708aa132c75407fe94bfe3ce7514ec04a96a91fa3f852fe0fb25797285fbe997893d9b2d8d372b371af314ace46cacf597c7dcbcc23916772af7e2dc1371cd91369d75eaaf6b618b0f0f154c664b1a96ae39ee20113e31445a879ac112ef4720f9cfc1d0b7bcca17a5a439cf02ecc26a055351aadc7773cd00213f66e737b7c44c276e1b43437b03741c53698476653cfdc5898e3e24705b73dc7ca967d78b01e5c7cb40a1f0898bebdb352999ebf83e0e45e5cb0fddc59dac8cb8ceda24060c7cd792ac1ce5cffe24c2c9c3cafe5ba0537ee386bfe3ec52824ddb6e2bccc7b8249a01fe94042b34ea4f0b06343bfd6d03d8f22c0c0815c104fa3d8bf73ebb29b8cc27831fe2ba08410f88e7b5b5815e2ec60cc8efd4dcad4a096749fd0a23f116f3ed90c8a4d0e826b07a57c6827fa5c6fb20e0d6b7861e7540c0d48ed9fd2ffae6f535399308805a8b88e59044a76af70ab26eb26293cd76c1e52dd1797387953f5d57ec2c852292c6b7df8e52f54fdaa926c34a78a8d865157d6d1dc023126adcceba32a8690f66aad654204dc3300a63ab2a5badbf2997b17c190cd94f109270f1772cdb1628d23f4831481a9e1f271a2ae75ef3513096a6687900aa86a8f78e1e669f76529e8761da584a829d31673e3ffda0f3ef7f548907f787dca4dab3ef5b9b7ac9d2d937bf2907a7cc89c4cb861d2ff92acdfc566176c9efd9b8f32acaf5be30decdd940ca486b191f93ecbcf717f3da24d2d53b871fbff90e33048b813683bc3e58896479a2375b2cd0c87da274b7eff0fb83585d27d04278085dbd89b41305f6f261a130ddbbdd201bf29b7c18d7b055d5c971b77208b8b31a90a9da8cc5c940a7fc9cd5ab572f93b6c69e1bb275942459904875446a0cf915078fdaf72b80ce847368a311870f42f52fda86ecbd02cddf2547c0587333fece5f8e58a269da3738fee0601d2d47b9c124b9582c4a90d6784cdd8738638bc2d7e7da136ea60bfa9c8f487e97ea378d227e5db3a0d39e0539b483c60a8716d5239863908fb642577422c6d6d34ac1c057d60dc94e3b07b63b1aafc68f6791000e1195e7c008ac448f27aa8386b12cdfc1fd46f68aa8414cb9f3947a487effc028cf4f22d4903c29ef0baca663139c5f2379fe1f0ea4d2302aed4158fd8a54fb4ac34729e8aedb3d6833b92f028a3a11606057fcdef8f7dca4983b8725b4c8389c5d5a85ca6a5dab1f5cc3d26209b1141e5e361dc8784625b4451b26ccf1f5c6c39fd5f2a2b454cd927394656dfee727e23e4af144b102533b0bdb258ddb6089a9eb4494107064b756e3b54cb900b40aa67a6936b01c9aa1100319522cfee55bd9bf2a28ea7dc72a8efc0d405dce3cd25fc7e42f9949c8bd9fac4db573761a171122d2820563a133edaa19c2b33e92f52f1dcf166ef54bad2f427e64b76b2706a143bb17bfa9f7ee871fc5448480985040e01b00bcf32b89b2efb62c1d9e2086948ebdd7e81ce061876ddd93cbe5297c5e8b76303c5168e49ff1bd90154ca24b7460507e5e71f7fc4ccc7349e5b78b5b706915897b3fa60e912acbb0232ca2832d6ee91e5924f209300c6a11333615d46bf3962dacc19d58bb3c010ed69f809f3695cec349b39f569512d025b79e291c7a7e68838546d988af7044b145ec0cbbebc2b2c97c0ff89ff7e071319de2e38917c77734dd173f6ad5508baabddcb8a3090010c8bae15e9c139d0ef31f63d860c48146e47d40f62d62ca950e04300876d3f428efa768a1db08fbee0bd1d442c6a394cba15f1fe4f34e81866764c36f54d041951657b07e464f953c03a809bb73aeb703f45b62c95fed321ac40f7b26304daba777a529a5a4fd6db0f98ca683b78abf4a9ddb0a44523a6a8f0a5e2ea67186b5e51fc5e32e64c8cee092206f06c81765e096cacac8e19dfcc65b80565bcc1d6afff8e701449821ec51f2a6ce15f950bd4e99a27c3f2b9c5d10430835baf13e9e180bbeee9d0bc2e6cfa44f8c690fb3155afc31464fe0b8cc37dee017a17d69e71d96bb943d9e2a268ffddef39f1f04627eb8095a512d5de9b3f8e7cb3bdf786aecae231525505d902031ff54e315301ce3776e5ad1692fa3b3c2fbfafb14f00de9b3291ac5cb2504efad601873a1f767cfcabca5bc1206fdfee9481d3aaabd100c53c306f80e7fad80b6a5c269bed154cf11d7a5e391266eb4fefa92ca55505a5a78615d347220f2b817cda4ac9d55fbc97f898188e2d3f61b5aaaa2f7b93ad1ef5e8cc91e1d26fe4027dd25a2fccc0275ed54de8a2cf2ce4ce799430dfdc5005fa725210e18ab3fdfbab8e28f6d7a1e99d7182a96b828402f57000baa3298c0c47c8578bd6403e72e24e1647482d99f0629de2daaf3093dfed64825eb5a1f475d3f90ae7ce8149fde80778a253c49e4aa4c0528a5f0740a7062926e76cbe040d5d1ca7c20ccb77179257564f785e217cc71d79fe1245eafa5b9973b8e18b5c5a71be0eb130c50a272db729a43af0185d6447449da15bd4210110e1f5ae9d9774885f52b32973f4c164c66386ce4c736156e3b2ce3e0f8a56d6efee73c7e1dcb3431e39579dd873d9e150906d6dc9c557db69329ce0306c2e0b8c61a1e11645f357d213a72a3a15187a48dadcb1b182eed46ef34d3192b84daa2583795794ff110828c1cc3ad6f8f376273d4b8533c479c402942be6ad47117bd321d9a019c7a29668e89f17341ad45f68842b0c94a575b1d6b7ecca65d3ecee8211443ea9a98d241dbc9ce681349bd3d0feab054dc0fa8d4ef6ac01eb2ea8ab7614e00d7d5a9fb48905050ed88e80afacb17640802c562b8fae020d3ec05cf3ae3a72eb2235297a4f958cfbf77822ac6cc83aeb92574618db4222d8028f5a95934f92315392d5002d2e607978e53f17682495d34a8b8894f383f1969ac7a90331ee80590f1582fdc04593cb3ef9ff92305590311aaf2eca2eee1fad8367c7d9edf0e83c63eb5e44c4eedd9246882a952fe681778b8389967b0d3f50d161cea831506c1047c196ff672438d131d70854d5fc4e84508ffcf36dbe82a727615d046e95a758da94e472e23d35c8e737a594e4342f7543e208f16ce003247e23aa5469590d6c08fbfa9b8d7852e23c57f3a2c947713268c3954cb4a1653364165b1c9e9aec4d984ec8e1760192df87bc162feb6b62caa40c4e22592b4f75f251cd0e28c0150ca7dd475ac5c74caca2bbf80e1e19000385613f2005d9ab3b379ab71e43962fee9218b13729e811269a37b8d5c8dc93ae19655db1d978161c8a6e71a1bdbba8558f5173179440204a6794fc63a63403e0261089c8b010f0f8a60fb0a199d156a097927dd75475f397a780f001d55ef7337f9eceeeb9b4fb64c720a9e1687a52793666256bdb255f22738f594514b10e21445fa9624ded91c3273763c637090071e8345b9a5fb299102b1cd25017fb6bf2ba3e1b9541cc6474b889ae5f039236457566418bfc713ae9a9cf93bbbde6b63a678c02fc539e8f3207a81115bac25c1208970191d273cc38616f894c65ddeb0aefa3b847401204e92aea8fc685f038de8d1512461b179a76d4a187f5a8feb5bf3c565b8e54c7f39c3cfe77777738c7fc21e1344bec8d3a7bb601d6b78187bc9299b2361a2106b80ac165e0a1a8ecda399b302743846c399d63538c9802989c1c2c0b75a80992cdb5387f999934c4210e3c31ef525238b501959e556c94e0a67a414d699c227e2faa168f66f30a5ea007ff392076263c3bd72756733b499b118681b2d995cf2125ebe73025614287663fdb79a443bc07aef3d89f1c0377e0dfe9a34c27c7433ac0901b4f89969130cf713e111ea4e3dbc1e602148705191fbd2d25e16af3df23fa1eb6cf7ccefa1d96b8e871a01767e3e98feee3d88b49001fcae5c6a7717bbbc75153b6533d9f1ac13c0bb2c90aa1be0fe87abe1a27ff5bc678ab59409b44b4f50b02305fdba787a7284acf8ae4702adc6785863e881b1e33127551270390546eff1d48aabc71e64f314ff645644c59a079c826e69f8051f98d7f3811e57d96a8b7059db90716e428ad0defd692efa78db616137494b4c27a7aec33a51ea2fdb1b02e552315f5e4b911f558186b3e635e280a4c0d22e293c32db90b422cb4d6ad86b4c025d0a32f5b14f6acbfdff89915dfe554eede219cfa8af3994d42779e274ef4d938abad588641216e7353cbe6edccf6f07c535fd48b51457bd1f2f44f00de801517ba3505122a2b9c96ddad3aa6be86b91da3f57c6213d33ccbdcaffedbe79f7dcde4074263db59ec229fc1a67e2532fd358e9d2262cbeae23c033a6b6fcfe86938c01c4e04182dcfcfa66948d529b298744e0c16e214ca55453c4915bbb2c1e4d74ded2b00ea2c35f803b7761916f3b8a3b800a951df222b7e394387ab78631bc7b3fb12f6c236a4929deaf4dced53881bb62b17a37a89dd27758cd58d3d4e3bf47b711560e8c3c5d8bb5bdc4f845a239397d38e87f513b701997306905b1d86a0ada0fcba2d059f960f97f4848ab5669f12984418c5c87d3af23551d2be2606d90ed93cd2c4c87e9e307915e2ee875d647fbc8d68db948f2c1acdc66cc4ba963d32fac6c594eedad69511580ebf222d812399e6f8eb484efc0b5ef2c54e3e4d95e1d4ba00d2ed6cd40074100ade2a9089aedc37659ebf41c5b399920cdf06543f6375142c95e4196650851e19d231da5234c450972a7ef92f17a79efdcd308b2d700419ab2ac667945b5da3261a7e04e2e5cd1c131b07ec57e661bf4069d5fe3eb6c6f3985ea5d388212c4ea482b67be0304eab2537a78062352452ed2c953febf4608ab263e8dba59d42d70a6cd8571a9b142d8585af86e5263ab2549cc7d574ad2e59aea5a791672eb3cad84a1925189d58e2e51c9038796ab69c51a71edaba1b16bca1e832be1cd9d197611e43a6f6645d98f3b2516edb9112e387721d002457d3791f0341c33b052297421c0fa98bec2454099d8c89651b97b094f683e61ff614feb3f5262d4a2eb9010875443ceb8ba62bf7b691b3281c2de28afe4b831d438545e4b56932efcb868f73ef304daa15b37f6bafdb1cd9dde78f7871bc3ea767201e21a3e801a37edfbd3ee0ad16381b8224be71df4e4ce993c721c71144435d254ee5d3e4cac9d0c0541651370c35dd58c315f6cf2fc769dfafa07a650f398f393b9756e3832c9b5d28a0ff01355d12fd21e988187262028811beef8e67c9b4bd0f1cdbeb42c2280bcf22d5d2fa65fe77a0b2baf734a66bfaf7104d76a4dbf5f6d383523f8365509450346fee901aff5f35521460e51c44040684e7314067ae91e581a7e356b0df5e74c2e11346b3aaa02cff2878ee549da52fab8d9f6d1bcc5c70fdd5b8ce5fa6cfb4a4bd247948b438c3c91479cf626c88758fd1264dd65743672b425019b299895ae1fae0c639decc82c68d660ba9beff504f9319b48a5ffba7b1716ae8cdceac2b2824e75f9ebb4431934e0cbae7a68b389c9d3db945a0a70f574a0742326463c5f5c1e18029dd8aea84a37ed11f008e6ae986f8a64d78a63ef3eb3adf019c68d51dc98e47b45de89331b4efcb8c6f36cf6e81b01772460357c5ad6620c1496031d238bab93697b11486e6659e4dc837b15cd815ea10f2fc6317a8f9acdb9dabb19054cc2faeb9a8d344372058e3665beb75ac470ee2ed40fbf14f2bea1492156ff9d0a3d1aebd862beb4e9be0641de4e7eb1414ab0a2d8bd1a3c50a698d390e579dae9142e25f6081c107cefc4b2734ca1e5c25af7e1ad870b0d516ba44cb94ee924698402cb6eaa7f61a4c28901b7b948d9c29ed2af9355af16eaa7655a48f35eb377378ef36a37c35a84d8e2721d98e397f156a640790ea7e1e3b29cd0306f410ee0bf732e863584b762028c642827737305d754dc9666fba7b377b657e53263ef037ce2ce1de520da821d3d420d2fdebd7cbfe50702b3da00a3aeeac5634c328fa5a7503929289ad1516551f6327c67dd90c18c70f3d59af30a69bb9a6670aa472754928e7a65766e8564446d15ea967777adfbd33e593110740eec28a099ebe5b1f5cd2a62907825bd8229627a875633730b5f2446d172e66fa6dad81fb1cf61e760161f01e3bf5665a6931aeece5948149f8715011ab26a592c58dcc28c2c855e01f98466fa92e3a8e276d4d78d0209c8055b77d4aa042e48a4faa4e3edfaa382ab7faaaba0a8b163544206466cc94fe62fe7b105c304cd7ec4e9172445a06bc7bbd50546c51f5435127637f862a7d659716ede24a9f6e97fe298c37e51fbab2ceab3cda63b1d1304f32f32e9322c2245e4fdcdd34bed4298f31a9dd805e5ce0717acd2432eb9da4e75fcdebdbea007ff03987160dc6d8410b8a8aac2261e5c530c352f8f728a6d1b131ecaed3223ecd8d1e6f7f3c6a29f2b34e4377558ce6b99bc2ac5bddc26d40b5035441afbc875d24fcc938139a76786e761ac31f26a2197f96cc0df7bdc39f063673011baab6e16431d5c1b76719524ca687e0a006b651905be09f0bc4193fcfd982b49f0b118a81e841823cd9e274ad8f5fc11b3800ea5a51be48625da4f19e0ad033873ea8443f2bac53ca9a526e109707fc9f2b9a0f37989fdd4c1c7c096093b0770334b1b32f44a65dc5a6a9b1a781d41edf2db6274f2b7f80a4c558c1facd83ffbbd456a23e1d61dce157e861131d6a3e7cbf7efb517e7bc431c3f83020b812351ada8f102e6bbfbeea27bb4eb9bd516cfe77fc72ec1ff8ecc010d59c4e2c0e3d1436ffda7d7fdc1f4f3afc671ad4fed9ada2d8a12e446136914904b1f2f449f1e4f6726a3ad1f3c10ae6daaf3be2c65f87a893b0dbbf3cf60a457135e3345441b6237e801c47ee4a8a42cb7df0337ec85d48d1c6beb097c43c8b552c5cfb6751f806b155833c28f44532887b3fde5d3b0d8047e715070f999486c6f6ee98a2ab840c5e0af9e491a85762bae310956e533d854d4b604a703458bd2fa1d203cc7ef447288222774c208b4de79856021cb2eb80c5cb4be59f4db119eaf572ae1cc1364d25148cf76a6b9a6e0dab98e1c97bd919e556a1132ee93453f3c5e2653c96f520fcb049ef64a1628caed3903145778ed37f37f6537f28561fb100e554b95e8422a0c21d668cff48924dac3f736f1874ac97f03f427ddeeb4909b6d1d47f8dcdc6fb580054c3bfa6aea1a257673584dc1256d68d17c5379ec255064a047cdb2212a3ad3c015d02267e5b4e9e3ece50c513cd84ff524702e30562273f6f198650bf9a72f4f57405baf65face71fe32e0ed7f9d829957eebcb216173a84bc66c74fd8a7106570b9f5df21cdb5b978297399a85aafa09d799386825d4b49837cdc645d0a0f9b6c9c75e45b2abfb67e50b2fa9b7aed1bce02c425e0945be5dcb16adb5b222d892b54dbd510b208fb079d9212067dd04e08f898afbcde580f72af0c24a84da003cb4f590f7fc02426272dff84f0cfcb788ca008c263c4215d86778980b238289b53c19fd689b4c42ae42f15646f761016cdd008f40ed1fe055e6a3634eda0c1bef3f6d2c3e95fe4f5bbd7e805e356382668afa60be5ace4e638d76f0951a1d7c752df16888c0d6909938c775a63dbf21b6a068847ec2ac5ddfc87204f97fd2cd021b335c7d1c5923c6225353fc070d0f203fc24bf3e958d5fa2c7ec3e8a69175b8c07ce4c2964efbfe320a82d164f71d1d34b2fbf039c9863a76188ad497ae6d4f217336bb4dae819f659c5a404d65037a3f0154c3e9f276153eef75f3361672a1cc00eb90c1bcbff48d7f79448db1877043f76313b5cc9436298f469fb037f90b77108f3407425e2a7de0fe3ab53ce6b370c643852fc07c204b9486d9bba5dea275a053aef2d829176b397d439f4179f2de34bd8070e37c0c350f3366e2a07b378773c920d25a67dfa3f943ad670731fc21a577f713ab3eea5bda037a06401364828e9e0f35e65c7dbc60a3ee109fe72501c79d22cf93d061fe08e8be552f246790dab993233b89217fc09202e6dacedd9ca87f802c5a7e31ee888885607cde7df49b5177abca4746d765244b3287f3b8fcee5b37bcb8842ebb795648c1189858403e2e2eb37363dc10fa440ac6ce454676a13b7b75cbe4e5f976eadcc409fc5462cec2133ad6e7fd2b4cd833e81e6e8a4afdbb6595538ecfe7db9bc5f5e61da130deb0bd8e1f5a2b9ef839415391ce72d9182efb5e7ed5c698db10e29669bd36c70156dc4c912c85248ee3191bee7fa25a75899c29dff2d3289b3011f390e016716fdb35242c497eb15c4af762547b5b6aa1919a078272131ab1b4b95b37cbbd1116b0f9ba3eff149a9060f385488d7c812a55ce3864f61e0235c653c52bdeb324902d45d2c5af022ddf6132849c58b18766224053989640238375fc3ba3f3a5c07db8ecc53dcb18f79e73e2898e8ba2918a0ef8ab97b34906ed760ee9cea733a0b98714d8fe306f98fbf85ce4dfe30b8db9af813c93fbb740ff3d77855af7b781f44fda09bcc972bf618a9474ca65487d0948da8e3b4e943068b22c2451a183fe0ff8bcc2af751269fdbbb41af73fd0c11e692a2f51ac6d4f13ea50bebe5c24b8799ac2f7bd5b2bb9f502aa2395b9f40ff204749dc3839cc650367a497842ff2f87e58be6df76a419b9be86f4a7b10faaac83e4b05791d1e54df156be7153aca731eb07a9442d9f60bde21b2489667c797c5881d490917f6475d67303be451357ffa9c6cec48dd341b9686b1d4c2d9e7f16db11314ee0dedb3df96ee93275829263e8e1ad87db2b11103d05d9604b1fad29923f57e4035725bf8a964fe8dd0de3410545cedc680163e8dc6e394a8dca37341b561bcf440c3f3c5a077e1ebb4d0b88ad42decb9fb02f5f9cae4e769e195b087561e7eb8217d8f951adb4fcf735c3a53f008492d0e6159c07a261903b540eefcd8c7008ca7f9e4a90ce42babe4ae0058b038aca190ae645dd8600f592533ff40847dcae138ae599d52dc3914d1a9358d19bc488397272a3cf3cd6635f1084a0bdbecaa8ac2e019cadd53a01076dc5ebceaf743b2468a661f636cf274ec83163b2aeeee90b0bb64e0e6b5c738ba258cb3e2d82966e98456ba2de81995dc1fc6a13da1020e2b40f09c8db59ce0a2baa1c87440c2c131d3d5c94ba72bbad2e37009d7bc9a314fb84f9c9118a740ea7a976769d956e65c0305320a5cab2291a11e732398273ea296a1af33614822f20dff639b8231b2be2cb43904347d83444a84dc0f9d4fd9605afe248997eb698737a6f48882d8dc54590e885c87a69115129dd5e59414efb96575eb8a780dc435e1b30570f50b4b61a41f204feef41de8d971cc010854073faa06f3910a94bf670a0a7b7485b1c6dcce74a5e9720a97b6fb1c3c739e789025f0c703ae7679b0104bde806e0ebf4eb5c48a37c58f257e254b0796b792909d8519640556d0aff556f6b2129e8d636c3beada1763f6dfc85ee1d8a69840b0e4b5c49b16c048d919a8f298c45badd953049b2a8a1c13c81bfc3dfb27988e6c783acab44d1de383a2a0d4b857ae03d999908b644f1525751f6588345a780af72895d07648eef070ace935f6357ecdb3ed412106be383e35e6afda2454b19b9af42a2c43bfad931cbb3639212712205efed838f44b3b2c26b190c5a2468d44496fdde6b1afd1df2a3b38d3a4e6ce16bbc39fcfdc53c028dca2be664cf54aa42600eb2f36bd58ecc903421778048da2329c700120484d6749813d05e1d150260c4b5fd3ca90fbb42e4feb75f79776066a5fe0548e396fd1d6c10f6204571ff6961f96121e61c5632de0dd65af9709c4f74f5b0fe8ef4633498e293eb0a7cc41845c2fa3aa7111a058c700eb602cb0981a5241bdc762683cfef545245d680c08aa83db5020d33261f067ca874a92492dd2014c92a523b16cf23899c874b71d16102844e386081a6d5fd2ec2eb2f9d48c0cc1e3eb8788f48d8f991e6296b53fadc7e5acc93fc8d68994b3229ccf8c36a394a5b0bc0f81ae8cb7a9f597dc559b7e4c5bf791db495a94a281e006058de9d9302ea25edd79fa1c1e76791f8c233189ab1fc73c6bdd4e000e09654771da9722ed3fd0e26178af29b89837e0f6c197b41c105577b53006043f6aa5d7238bb6d9e8d002842cb054fb2949f3f95a5e8b1bd96565cd38beb8a43ca5a492f7674a4726012a834349c0e08be0e67853f1fcdb6507f73a8ea8eea02b23c9b3c33e00cada45a8f8941a1ae91d750fcdbc68487ec60b46757bb8c31548b285cfd3585f19841fac84892542f133aefe7e9a1d0e006985c3dab0059af747ce6645c7f39af789534386d7f9ec05f48a5dda24703eef7a56be8f8f6b138baf4ef9cdfaeae0b77aae1621e6923b2036cd32416d67694532bfa08de6d900c49b0d37c1984bddcc51e79827f6868210948e0b56c2e3fb67eeaf3401057e0f295f4285a6eab2b18a8c566b47f1a59e5a12752f638c1a4ac32f226f207272803c98234950ef93a5765925f3cb848b632bcbbaf322defa6dc1ffc21ff1890c59f79660096c773bbe02726043ade41da83359a304589c4b3e4339e14873c61caeec1a93528b49bfb7bc0832d7c947efad405d8871e2a906b0d4513ba236eb7e025faf4b7474113e9bb180577637e43734715bd838aa209982fa202dc2d345bc31429735c0829c1e5756028fd1333f6d9ef77dc98de95e009f58ae06d78de3f581374d5ae3bb68d7a521a29d880dec854e3256c413abc2b0e87d7a5c2a640eebac60165784ee2cf9f3751ac349df85d7bdeb9e8f0404884214cde61a81fe71c944d0c6cbfdc86c09db173ccaa8a558988cb8c62f2f63a0646144ef9ec86a291470c4ae09a3ca0ef0c55f3c332e49d5bc6c91d424fe449079b35f83a6995058bee6287716412c50beb045f0c639b31329b2daf342d20e03bcb7ba1cd65be3400275a0ec947f544bcbff1af184df479b25a922925e59a2434de7a8774771a4004e16cb54ce659e704e3a16c82fe63f42b8e23a90f2cbf834a076cb9e95a5d4a08f4fac76c04426475e4c888cb49ee14ae50740b19b2267d22297884538fea439a2284ef5b891bbf2f1b0e41b3cc91b013d491a2eb5d70274e4f15aa0f0056e2106cb08d25f6aa3cc7b619a412318df19eee1b4cc76223324c54e0420a3f9bda6a81eafdbc1eb04c159cac31889274561847261f9fef9c2dff731ebd68aed484743196900c068caf101b07f351e8260b44e9f92c5eaecea4e25ef30826d6bfd3e45c6f758c142700f2bfc4b3ea96b1dfbdda13e233010e4e74ab8577442af9d18fdde9d8e6498d5c5d9cbf37f05c9e0d2ceffcc0384f05c52e95f94e5b28b9c981a2c4a433b672df2daf98ab728b2820466b68743cc7bb9d7488045aad8a1ead0121d6cbc180b725ec4e42aea39c3f828c9c531c775054e81fed14456a402bae5566f9537af07bf4d60df558d9323202d7411fcd35280dd2b79c4fbf9b646876ec26dfe992ed7fae67c00577352b05944b1771f93fe8d5d4b4026e28187e53556f635c8160427d7763e603d94e5f9b67b02fa8a967959d7427e9752cc8745b882fbe6fb46b48ea69a2c86aea6aa1f17b77eb7ad8678352db4ef84318d994d80be6e099418fa138688e65e7423e8b4142e7f768997d8ffeba95076006f641169ce16936ac704c79ff0cc3727f0551842ed1fa1ef6a4017b3af6318d6436f5382cf1a37320ba4688d50fafa105b161b463b3692436d1160fc8da8dc6093e91319a8501dc4e8eac6ee8b38fa61ac357a68eac27567f5d3812e44b1b5e1c28b91d44a18e950df9a47e3224cf782e6e7e5258161506691e3ba2965ecfa9579fa76f57cd11e7d6c43aaf5da6f63361a5e7b64106f89cbe3a6ff1c0f7442f802262fa0f2395c08737cd618aeb116d7b207296e514fea3d08a4c837908dcdb14811ab4b5ff8fef6c5e6a645df06d4c1354564f0b0abe3d3e93207562854100959c2839e92932c91052f7f4929a8f3ae18d3e1d5c88a58993e02dc25b5360838d550d3e1549d3da96aeb30749526d756c7d6137f55f372fb6f017620083e035566ef990b2a3ca9f2afef1c1d3caa1a4f261caaa5fe60fa60fe62a7f0a600368eb963299795e39925c04e67f3342b66285bce4a2a889735d707c11a6c421073e662ab13c0e9dca4e24ba2bc30a588e0b13a96dd37dd7ee1f1312e319aa369960beb934b7c5b339048b058a9e889bc106fb59df37399a4ba315a2cb36b76d7fd9c6f00b12c292ce692154c4e52f307c5004cfde6ffa7b329cde22b47ecf7c370ab99d3d78e710af4792b0909685d0b7874372f25e04c3ff4005638d1aaa9f80c27bd4636bfccf106844ef135ea4682fe63eb501a65e63182189922325c391318c8dee40348a0c91ce85995634ac231d1991ef6988c091f2293ce0905ca56248bd707246b0889a4037d2ff102a8069883ede44c44788e804c8f401ebf2a27c5acf9107396d0c595eca2ddbc61fe40dec661433e01cd098a513f9f99cd3af70f142a1de7c419adfaa8ddbea039db0c08b6db1c6111866e6431f07f71afcdbd6258a4d7f496b5a3da621de2788604a2051c69c883f08e034cbe0e3e5eb3a3284adc0e039df7cf2ea6166907cd44b7a29930cc3894644b740e9a6ab9514f8fd9ad9f6365b361039a7c86e3962baa6e8efd0ba7fe9da382648fbd6c7c0e5fcb1558475222412e82beee56228c483b263bf3cfe05f49ae3d1f3125c710ece6fdd04e9fd9cb628724adca703cf3ecad4532f28dd703d1dd38d78756ab28f5922ce06d1297e7f010b2b23375b2cd52856da2034d40495318088ab2897a503fd8052466fe5cbf6191e41fcf83af98c5d5b64b54040b7fb5149b80cfda42c86f90938b93ee3a53ad5e8c54acf89933b460dbc0374ff80ac04d0b6b4c640a25f5303f4b5db31c38ab94fee2d633e0092224cb0dad99efccdb3da10bf5d34ccc79cec5186bd4b1a5846ed883f949daeeebf21516b2ede58e19aad2ae5fa34a9fdcd1d029a93a1cab512c60d2b137caca944ae2140d9c1f7a14294f08112b90143c5c83db2fa1b600e01ab8979cc20f1a6f3f2317f341f1879fa8a731ebac760159327d57c345d917f63a19a3cb4c6aa44852c7ffc14c6e05200640830b8fdc1ce412ec9bd8696dc3f32741ab763e058c6ba8441df335f7d9312396fbd7bab0e9c89c28439db09825bfba9da00aa576392f350fee9bcb8d612a0b3ebb26000e46bfacfefaab9739c0a842db7ab3c4a32718f0cc748f282fc6bb5c3c274bbd300bb0866373bb4466679c67b36ff7debcf5503098792da40ce8163ef48e970bf97cf5156acfd8a1ab28b1e8646f36b4ca94c0a153faed3d3c26ac4733f874ca28138a031ee1762fb54954a291bc06d857381e3e7e56598e1788f842d5e1a799b34e62f9e856524d0c95583d0fd8be2223e43dfa7151ac8b1b8f9b60239020da24c2b1fdd2b4d9a9cf37d2799ef6888f8cedd4cf18a509f427df8ac5f4cdc6e77c9fc9fba1583c61a3f293ffa1cb541e96f12e62c0711dcd81826e4d0159eaad33d5fc4d9629db88afc1e2a8e546cd4bec69b732083707fb51ad4463d14333d319b5ed3a636e65f544b680452ef3a83bd6bb0f25b8b9cad0ee2f15d99b6a85006f761aed4b0693eeab25f263f67418125a963086c1691b1b8c514149a68ad02210b322ae459bdf0b6ebf2f4c2464e6d5b322ed509815e14e60f961cfd8162a648f520076a31c38b89baf57c9dfdfb9ca4151900deb9dde107165cf9cc86dcb9adcc2476611e17c2f8ea97a5d61ba448b82a6dbf16ba81c33972256dba443e058b7d3dcbff86ef9bfe81fa43a291724169611a0dc276169fae44a3c1369915f130cffa822856f2db9b85876961debfcbfc440edea41baa1af11df5091d124e8444e400a1c22c270beea21163d0b5ed895efd66222e374e8b45964aabf725d9694649d91b62a4838115e04c811066d9f9c93055f7d81ca83e22137b1b86a082b3da69e04bfa3b44e99109605ce15cbd9f27ceea29937510fc170530d47177f6571cf424c24dce0b1157abbd9fc8f1a1576e7bbcf8407d77deb6d06293a042df625d041585514a67a2efdd589c60e7fe45479c75c70f58008e85be08d237176f553e0fbb0a98b42d8bb3715e33274fca01bb7336a64f3950c0f904347e130ec6d44c35e96fb58905badbeb753d4ddde3f68cfcfac3729092cb8a65aab0c56bb735044ad86d0c8985ba83c549b900866d7635a8ed9880d6c884680ee9c1b850065f6b1c37ecf1036f0a29098643abd34b4615cf6249600a7ef203fa33021307993ff9dfceaa71b6c46f1e9c6d36dba651370c9dddc21049f3e0fa448d8dc8766c7519303fdb8a440f33024d873f205dacc45cb70d8eb494490188c21715ab125415950058f34d1572da23491c1dc8888c3657ff0af07ee3d02e0f3f982eab56dcf6ece1625f9917934efbb40f918bdfe1a71b671d684681ee5719b3c3bde2429378b289f28dccb713a47e8830fb7a91323bd5c74a8e6c8b3f5e6a445ee5243bffc3ea5dbe333dade0f8c41b1f3fa7f6877adcb85c8ef01a5e7bf0d8f5daef78ee0f9bec8f5a95a4a4d91df3361f7ae548cc68ab802ec277ee01d615e48d9a7c1a9375339847d76a9496063ba365aefbbc624e1f658ee6ec89da7d5bd8331cef27eaa346179af8f250f6dfb2a7bc31f0d42ca05a84e42e044595d56f77fa2b81d31f69411fa2794603c69e395dfe34501d058d69111d21f641a4b0c46acdb515646322dd1c6ff45fbbf362ae3e549163e7da7c64a5baa7c5f7e8da6c24cfbd7652f9c44b6233174051960c6032db65840057cb34572d245b4759697ddb5663086333f2c8d44bd3f6d253bf82d5a070594002476e32f817856b473b1a0b80f50502bb89cfaec99e1aeddf4ce36052efeda2d7af9cf0628955d2eb3c6198e96852180d92b078b8c9434d1ebc4ef0fa141993b976d86cdf5ac16993fd6341a5ddd4b3fcad07350b7cfb553fc23ff9dda8ca9dcfc180a17d8c5db8623392ec6c112af958d59622d14d5e970c4b2c9b82bf501141ef7a82d06d5fdd0e8dd19cdc271e1e145e4da60f141307ee8741bc120db67966c6f9171af1521e405d15d5eaa1ab4b17e22dff623711683700af38bd4bee23cea31c30455ec0be835d3d8e8eae0aa2b2fe9ffcc8ef1749cd127fbbac15d313dc9473ec7e24d45aba43ed10df65989f700ad07334ad7b0fa95f079edb0f29791ca2c161af0122c8b75bfb2990948d81e57d755721e9de5933cd23ce681b9aa148e3903f1eb5a283eb440831d955e141fc5142802c1e416c2b12ce5cae0215414d17e2fc492bd79d42666796a3d20463960386e3cf11fadedcb8d09e5a03e0eb9bdc141dde8f23d4a11a8e7015eb45d2aa8c1df272374eed8b138e5bb2558389ef793a218393f80eb6a1016ed62099b25229790300819e738c36628d58d5d000d76f76642bd402c0fb309ce67cd8f3ea196acf91d0bfd35af2d2135435ed64ad37a58f3a979335cb7ec379c72d3fff340bc60f667ffbdfa4a7d6a2643136aaf43499961345889bed08448f10e26cf28636f17be393b3dbff148fc6931c5769780c069fc5a70410f69ccdc39193c6833ff988ab70e9bfcb611e43b36bd8f2153e01345ea968ba6f3d68e6a55596c9d063600585eb2bec80c576dcc43839e1b1f245a3697901ef2b881343c2e040e9b642b3d3f54fdff16f16b98724476d34815412125be572b2a8cfb2505c59682deea0dc62c9feeb82dd1d959b937a6c57c4370d4715ce195be345a4c3599c30fe4f14befe0e102a8666be0520b0f16f3b5c2dab91c1c4e0ab01d17cc28d26e9ffaea3c10b93a339e396b28ffadcccaf5d9368b84a3010069f7b3acd2f8d060ee90cb3ffecf79d4ff170378305e63917b32de08e62b0e8fbc084a33cbe39720b92db683b82847154527b05712f5c0d2d455366b2b9f474deac98d41e9815da35bbebdee439ff103580c5777cd0044f06f405373b818aeed6366109992e3b26736b010a58b54c966721809f3f8781a6542d18e0abaf4df69f2891f0b0477cef7654fdc83fb762ba4fd95aa151bc8efcbd3454273dfa7d3a905720a57a9849701f15146f0b8d3ccef8c88d1d0e1f1bf51a76217d3261ff45de5943039fa0aeb49e25d0733b0c10ca643d5a75cb25a9236b65bf4d5f131fd464c40d88377771c10b0b0d5cf16d9de523d4790f8ccb8e383d6fdb8c5f3a0e1379cc0f49c89af81545f95371b09326000f20c0836da511b65ee8fbd9efc5a300135d061cd8452a216c15d7eb95421c9e609a6577d6272fe7e5b8395eb8b00eacb39241e288812956d9f97a504de5dd1eab6ee78564d26af996309d8264d1b0be4f75f7cfbf29d473877fd31ef2e9425ddd4414c21b5bbace508e547b65eadad33f14b242e4b3d447c06a4050aa12df4f7b0413a08b58b7ae3966b15e1c3a8650060ad78ad1cafec8c70887a8fa54edb011da056b34079d56516e8853dfec209810bbd44cef08c8e474137217e2dbd5ee94e2e479be69f2a07ccbe03aa358c8c7100db09e408bf0f7928986dd040994f385571abb2dcedaaf60b6ce1284e381630b35ff7305b9f86e7e8ca553b385a4ee225f670d8fb6c59ca0dfef0ca34562b2e65f97516be8777924e30e231fe346755128656e4c5cda8a6b3f14b35b8668a4befb0ab93f9265a30c0527759de3cf6253a127cd48a92bb732fe0e55eef6c397843a6d1d48584de78b245b45f88b50933dc69f5fbf52f27f7efbe757f0385da063997bee27eaedf6b05d1910e7a2832ddf4cbb372eb7be5d8b92a8b26220eded6db2ddd49b2caa453bd8d6317a85441011d97428f4a3d21196a2e95634fac278172d938384d990e0910e474df80815da98e55248ffb4c696cbc080f7b872fa3946840a2c1fd189f27161c7dfffcb9ba1faabb17ef5eec6c6e9b6dd2753330018ad0bcd818ef0f5ef61275fa7f5ee0b1981c824caff0e3770a0b50cbd469d49605d771297820379c30db332b3cdcdc2192294ebc0c93e75c2af93077de696117f5fa21aa55c63ad82e30798ba5578a9871908e85d96ab1b4237fca21986526bba9f768dd93b951da4c33d78eaf6f07753a98b6868b962fffabdc496f006a97fc1f71b32d2ded8c84366b10ad4b82d6676a0b1729176c8f961cd0552ff3c78ffcfff57f4376a6631a3574eec190ec31d840a1d7c1a7412403b2d82a52ed2ed8317362d3b3bc829e2396f089b0362f60a2368aafb0cbc957c1d4734461b07690e1fbd9399ba0ab11344866f7aabca3d9c69e50f13d35a52a4e6da84dadcfc6a50f94c1e9e14b87c1e07b3579fba59f6732f6b52623e94c8b2512afe43c85e8d0f32820dbff158ad78ae681f5846a297118424bb91de0f62e9a2cb19e5d52d903eb95605a80bd11e3cb2bdd7c0135b48e99b1fb4e2f030786fe94b1864e42998227eabf136669efd6f0c7cd91bf80856ab0a569e48d0a57b8f90365ef81b5547ce5fd0ae54cb60ae10244f14e0e39d2d14ad0f6687be49e1f56bb5c666a3952b0bb810f27264b5a80bf8a531d3aa2d2d99ba0e996feaab6d90ec04dc5911aad4f82e486dca82736ca7c9c931a0ce4095eca79b2e77a264e75aa93c1ff8613827a73428d6c939b5eb8333c6a9c22c45e6bf1f14b2d5ae2632218ed7e294fae3e0e900de91808005343f5ebbcb755610488955511efaac22483f2f6377f870268543a51cbe7fbd755dd405e5ee0679056987cc432f9e04833afac5583a1992e5a4733e9ece8594a8f14caefc3273a34e8ffb5757811db1f7f891ec21c6379ef055f5d24e4648f713ae311c7428d57d0915a6eebec484b81baf967e6aa59fae443e062c57a7ec8a5322e31c18e2263ea0519da0d69db3b92905e74fc529aa7ced23586da70946dfb2822860ee949fcf210f43f73c92977328f2802a88814497b50f0e8d134818f21b16deccb9a8145f46dfe85e7e4298ded00323abdd7db60200a5055f9333ffa6b0d8e2887258eaa9699294db3c4ef1360f11a24fe4252ef95337bd45b9407cdc00c4a7b23c72b763fdfe501271041b9bdc8ea7276dcbdbbc0823c289b8b6b7bcce14deee78d0bdaeab851c2abeb67ec7d9c4d9f74dd50c2b67271efc17b5a7892c9da2d16c0b0658e4e899725d31339fbd3146c6822fcd2e9534fcbf67d6c8ad1df38343e4a63be24f19ec7973964c0a7892ed915df75b2c5ffc467a4079e886286428843e792508c11238335d81197b0c63dc32abca0f65d95dea33e220db1898af0cad7d650504a7e439f8eb8fb439545e75023e812bd56dd536cb46b630a09505a80b86f05934b3f548f68bda34fa680983fed823e0c5e3bd7218de0173cd7f15215d9f21b3068c21f01b5a5c46da49033fa6fceacb87158757d78b5759ef6a8c1e18201f214ab4fda06faafc3726eae1d50023a503b3f22574e23581c3ee2c5881ee7b5881494c6cc2bd3a01f7f97f1e6d70cb23bb2fe9cd06b79601ec70df86d5e3a8fba23087fc0da2dc797a32a91f9928bd918d8021f22e665b1e97281395f87e1f22e2b6ceb55d3869e89bcdfb102aea84b0060ad64532f30e030b9a29f3c20d471a8946f693af600bafea022c300b18bf02e59ee2b27a4b6185adc561c0cf2d333471e3c9b85172d78d1891c60cbd290703708e8f40bbb349e89b4100a69dc667ce3ad07063522e241266fd7d7ec0f7d9817f0f4a71e44e5c75928e86b68c60c28a9c2877a8642a63051cc01d0c70c2af2e281900698ab615dab64dac163c7c7574323eb67e9a0c190d8fcbfcb1b643f1132aa2827bf361ce22fb269ef13b9529122c52f05fa38a33378fb8bbcbe727734e1c1e9a3cba88874fbcf7e6dbacc2d6d3906fdc3980d5ee1bd3add2610a8a07e9f835adde72c421d318a84b3a63b348df72c77945d089586db529b06d52256a9708f497cb99a508427b241f1516459758e691126c1120b60639249f86c47e8028395ad1ddd7d86353afa092eae975116d8feeef8eee531f1d8600247ec798044507f9f090a1172543f24f2ce2375ef92a66d0cd79e19c786f947f49053faf724f52ddf0dd24c18e21cf80c92ee34c9ebb9a1d807796bf156b45533ffa22fdd581ddb679790b47ebaf0e987dd6083f1dd8e11662fa9bca1793896be0604b7038b84548aaacbc51237822df3bd15afe020aeb92dc1919aab1f0becacb3deb8887553ae59f94925f96878ded96953ad25bfe8742a2c74332da66a88d99552d94906c57958f0be0f36c216220ed60c983345436c04959cb0d03efd4efb6484b386e89326a34992abaf9ec47c1943994a380597dad909706347fee28d56dc2509e6ce6bec8ad3622eac48d43a4b85776d3a700a6da8e136dc77d0576438eb889752aac77f717e43d7c3c32b9bc5be01fad1adbc01c28d1b14faceeac63ac5a7948c93729bd6b814a07c62723554676f3c8d061c021d1d9ea41b9b83ff410b4050c67130dbdc37847395b75c7cc2f243475c3782a1d31aef4058d72a8407bc55a4ceb32249bbb30d60057945c9a6c8263eabb29bad61f7a1edadaf5ca3f3765fc75e1ed0dda5ff5e480887f97a0cc7a590beb5816d79c1e703e9daceace8287dd0f9687abd1065d55a562d3745e068148ecc5fd0f9d27b40c26306b0141d16da9510ddc2655f6ce5d2d46618d9082cc814ffb6145d264991d3a2e9413cb50135b77c5c263a69b1a92792ed7837e6a96e81ff5a317e6a35b4d4319815cbf9b322a686aa4a79f8eaaffda675d79cc01b47eb842192d3d164621042e2b88227955970b2e730fa232ccada1d94d50840d8a447c9157ee48e080a4f99575cca0e17dcd24c5a829b2c8740e83d2cc53b1f9b6990af4c543f6bf3cd4b52bac40bd9f70ac6889f7d2220c15cbf7149426d5b75272b3397778c53d00ef1c550fed2ded056f652dd115b879804f3ce9ffcec1953b3f1ed8fbd4d0075cac7a4fbfa1ce00d07cdceaae400d7b4a0ff55af32c51b8b2bde1ba824fa163dc170c79b6663f45a92043ba4b0f4c64c2028915ed70e7a5c45cbd7063d9cbf6631cec5fa70207dd346a17fe2e6048c9f79d08b4beb31eacfab32051852e82f40ace75a98f9aa637643595d560faa00bfca543c3290eb1d25b087555ce4b8cab760c24c062c53c0d3208427fb3f42b5f3682d0800909a7abc03912b3fa906a4af0c06d1d95300d8f03118fa000362c681e801de686c2a1026ffdecb3de88950c87f9c16b957aeb5885ade3709a438cd459ec64ec13c5f0b631114e0c262a750ed29864670003d4f7a312b7f040adb118aacee9f72031910c868e1b1641febafa795e26676a65a926049838ab55674d3e8eec872a9256d59e60ddc6b2a743d1adf8c9055a95851770ee223ae072ce9daacca5f88d7a8918f7d296ff7db14007688ad8a3756aa01f2c6d3fd8755b8f874198ffb90dc9dfcd25c71002f2b1857819583348c95e6f3bb76119dc5cc2f34c7e72d075c8d951f6650d735bad21488d0979ba5fac4fb905b3b41309e0b6b93edc314d30b1e78c507a37bad6d0b5fb49ac684df971d22f07f78a0ba237dca329cebc53cea4cb6277144d6804cc41a0623ccd7437c5ce3e8dacde3dc06c2178f9dd26564f90e661f3a64265299929940979423d03a844f2b6fd2f779f0fed3c7019cbc9eaaa9a6ca618c247eb8c3182b6748124ba6420f8eb3afa452f7803a72577c3e57f575ddad44349dc5ffeca2f3b6cbe180e6d7fa2b468520e1aa0136c9c574622c6fef155faf77534eaaa16116d5c9a4101e0c2ec9d8c66b9c683326d0aba5515334499a28c18f6393172e7b4315d9bdbe098e352577af5a60b856f7eabbb4ed350e243283c7e79515085aeb79b43803061aa335ef5cb48d8c7a4c9cbd85cd88404074982a69b6f0ad6bb809e5f5c1d688cf77c4843956bc7ce8edf58425650e854c323e231a7369282d8574919530591da35594c7fb2cd8d960a93822b079f73ebb5bdbdc90cda58a57f729749d4c30af12857d08f7226a57ba54755a36e808915699f251999e7f2f0329b8af1e153be68185b8cb18f5cdb2ba014528bdaf6ea0fd9887a8aac32ba8f7c0b28559b5b1f0bd22cdcd755b86766c71d57d9fbfb45ca0f102f9dbc66efa868b4fc06d8bb79fa7bf1d990384e1c68072eab6aa72659e9fed27ab68de00681f114b024b8ff5902332c984b11615b62af9ad8506932d0e897ef3f7422f2f94134edaaca2a2a22c5e701d9f8e8492c5e88d5519870a09abeffae9c9612a241ec59934ddd78ee2df0d9845cb86633ada59fd3a00094a43286bf2661c06bebcfe143b42bf72566842437c833636d10bb9b1064aa7a6ed56f1609951738bfa305eeb21a507f73905b2dd80a5e6ee1d003143d6aba1c77d765f2371d2453c131a52fac1ed4bd3cda4fd357270f463d3425e1607b2723beddae218275624391fd0316aadf49791fe1771683ab4d42303073b7501cec43fdde5501d734996878990d153e099222cd9e1b31fbff11f7bb6a241c09fd6c5248796190ea656dc282084c9fba5523e57d3492aa953ed84635a21a9e785ae417f84249c627097e1c06d0b89989d0f12dbd64b7d43ea4c5551c97cc85f10316ccb1a1dbf700b4ecff7b16213988ece29c3f42339d987ce2481be863ba5c858ffcb9fb15ed6636c234fefc35d11d452c767d826bcf04b7fbad03b0b4f3350137bb022000dff33b850d268ceb96a79fc137905e705955ab8aaa821ca2e7c84bcc5308664037a644fdc7bf30a384afd89bf218cbfa3351f683e801fc509ff4d60e884a7a9e91f7b075bfc087c3284b0172024f23722f3e5853ddc509a07ca172912e69b2b7e13fd5110e94d5b7241da4644f042fde65f2dab2e296ae168233f24fe84870c19ac39bd7405c3106152bf54b65f3febee28bdbeb32fc1ee0876d0392b16cff69cd8ec538346cd85885473b3f4756c7c8e79b825fedf052a59a02add3b16cc696ed1aac809ac679983bb6e4d33aea305b51d582975fe91f718c2344b21ee1501605a11e10fdc4d3046755e5dca2283b95ba6257e11dfaa171a376429e6168df1f8915d18ad21f8d9e1bbc8528142035d2a6cf9cf4996757ade0cecb17a2c3c055c01a2eec895241edce89152e8c0e7e94db84b962aef17ab72fede55d1fcb37b7bf571b346003ea3a0ecfd3d55828dab6040a6345f3ddd6614597045e6585733eddb96bae2ee11d1d5cd62932b5aee7a7501d9532d74193e05a11d1c47460c0a949bda44a666f6056a13b03ff0469ae08edea116fda860a6a8d30e499a74442bd3dc182a8c46f1a3a9bf214070782987a5db54362792f5547ece32bee3441c7b815bc9d83f4dadd25a47120f1c68f8464dba81aba164b6dee92b0984c8a64819ba1442655867cd9adc28fbcc1fde83c98d2b5efe5113dd20cd49262bae416a11fab551664aab148acd8f7475557957916f0814e21616412cc73ab9b0fbbb8f11868be818e5fec7ddf5875e1c545399bf5b24a538c824e8805592e63572254fe8a5c8aa88080dc6fc4f4a93b4fba47ccbed02e7c364f98b2d2ba01b819ab3e4f243762cd3b05e2d4cf29c5ce544c0512da8d8767c2e5b4adafd204c7e90f035bfc577f58f1a358da2bc8ff60ad1fd4471b94164b5da9702a55735ca3f2fe25bf044ae940c2d198e851c51456361a5fee1742a8ffc76378981e112bd3f471597a6480599b74f2230ff174254a9e0feab8df3ca6d6bd5345b7d352864cd28a339ed761d109ec592986301ab822f4732c273e48bd075941dc6a6d2248d0e89f7184c2cded77aea241f7e6f9b86ac368e69663808e4a19fd79ddc0249b903cc9c39f879855b5e3fcb15baf1a60cbf5b79d86b46455a8d6f08683b23fa6d3d85874c4f818c5531d4f3533badd1941a7325b8f5910bdec1e18fa74d7f60e5a3a41ed0723d7b2af189c1e657e720fd1e97a90dd2915b8e4b26c13fb049926916db8a9a0718a6bd7f67dd145b72b1c8d7690db8da89d76efc83846f78c9142bd8be004a17435f86000a1540d5ad4490a3e9ffaa14358b3dc43fdae55d805253c4c2074ca681b4fafd71baf6fc2d3935b2841ef53e99903b5e27d777e3c233bbe765fbfadd5973ecc4cb3a08e465ae970874150bf5275301a67d9bb2887bd9a0498d864671e634e574b84c73bce2dfccd1ef98ac6bb9b911a87717f80f6c330354d8949ed0ee2311d583f68b47292c6502a7c68090dcc7146791d45f52880ca4f8cc37ea3bd79d059522d060b2048e599d691128c347b79550aa1b3ad951902bd5778521557dc76bc039757a4a63472efa5a5fff4b74a2d12a9a9d63058ce1129a8095f3696fab4e8f12d3b2d336914b6466bebed03197973479ec70bf64dccd8d877a9db05228955f35e9fd6e6123d21ecc49c2839d91c0edc91f1708dcc59f58ef196ad38f9c2aa00a2130dc8a2fa08a0a72a3e07f777992b72d98b8576db12e18040d4d515b78364bd32387f917ca9841e4d1e19552eea546e2984fa019013cfca19ffff54a679f3574f3959d34f5fe488510e37dbddf0d21a80d55b1e9f0af65f4e0ac53d769f97acb3b2f12f7d973c58e38e4d2459fbaafdd16c574cef1a70225e637735df8d1e35f0c25b3ba8ce0483d161bc604e36e2a627c9a48402806ef20037ad168ca062b00420c79620f7ac6630c630ef79004799b8634f8b183a45fb96682436a93bc3816e37e54f3147b0ef1bd924bcf4fa2b5c660457ef31c0ec3c02cdb0af25f74ad535d963ec8f9445aa5871d70eba102570a1cbd57d7d3c31d4da1f428b188a111aabcfd470d6b4820ed851a2e19ef5961f11134de27cfc2e8262ac3ac5fb3eaa2d131035d81aaf97fab326f931fec83d85faeea9aa58b700d5c918e8f480d75d36ad4da8e5ff8b50fd37c59381ca71fa6ed981672de9bc7829e17c41c07816555e407323fe67c06b5f59e42c47adee798c9f227b4153acb14de607bb7a7bf74f2ee8836755bb6305356591d622b550d575fca491ac94d549c1b7338c392bdd17aa3b14048346680da41ef80354521bdc748e9fa43a47c9b5ab4a69256ce64dd8a9c80a1e4a04405037aa15f2803c3d53d6518ef792bc4d2e8057d61ce0713971c2630117da8a0344d2dea60e49939b191a3fb3573333a2b7ecef658c9ac65a00441f7a8715166c1c32993ab71086a7ea5a55f953fe842ce127de0ff67a143a96a60c8a89dcd7deab6f07ff481729570852fbed29209ad7904b8c0ea78c1d5ee9f6a93b15bff50da4484a48aa5c4c0ad994320215cd9874d9747114554d3b5cb95ea0e8d6ad0a5e50b13a7d6498ad08ef4bf816f239527e8b163dfb9e29cedd6f76b235a44a86a2cb4608788398d3089881b7f887a96d51310c05bbc9322f67f1adaeebfe4bb973c344a9bff058e08174520db0b915181b52567cd199170f941876e68064cc3146e9a04844b7d0145028a1695b204444473b7ecec5b27d0aa0b7b2bce0f84a2638a500196bd2bb799014d36a09298504f17c087b90cdee6052881a9995fccf02f6a56bd74974a3152ae38d58f56514623a7fb926751d6d6848a28dc5df78989e9ca1bd7f5ca807f6588e27029b96088b9cd0e38046cb2a0ced871dd95697c4d3bf26ea8afa92129c6a47984e95d966b91bbf5fd294116a487e4d9e1e75749795e982ee27cd7b7a8cfdb3d7da6972fe3edd7b35b61ac27122fa78a4a3ec99526ee92521bc5e6d83e2b65f652d27edef3ebba51a77b3367a2b7b8bc64837fec36941a204bfc640b61ac75ec69de196c553867598e6d86a79be5849a45aa50dd4e137046c3f8d6651e6072f5fdfcd2e86102b0938168d402991e5bad13dc21c5bad0ce675c17746975a64a9b54304aecd582491d2a82a72696c98621b60a081aba5aaac2d369c0a11aaa0fe8326150aae8f735c53bdd41b3dc5df8a252af80768437acab56f7c92ef69d66214e2ef7687858346f3f93f0b157cdb39fcb1c4d6cf6b5b11dd4d1b6f9455da77476dbbaed2fcef567b268e1bcc7d319733ef2af89ae9c172f9657dfd4bbc9ab5a40acbc9946930a6b5d1d92685019f98619b26182eefb11845879d95e81d38bf876c49e79a2df9f74f4911c45149bba6246f6717fd6cfa7e79533d39ca87d3ae2ea7f631a3ba4c4f13f51cae75540c7cadc0cc0cd7f75ad2d3bd7c719868a7f2673b5d5e20abc0dab12f5db3259c2af052f24a3ac9046e4c3018b2174ee15ded15a60fa2e7ffdab65383619e537692202404ab6a7474f018ed66b70a9a7580e53aed867ac1a9554007e2131c47e4c745f9ea97d81b16a762f0efcdb463f2575ce6f61913cb763f843d2903548b3000a4cb2cc7bd1eafcfc3ea1dac4ef2606d044cd2ced0a29e6ce7d50fadd7b0b0efd96c2f2eac5a9141043f30421e2274b995d9fcf702550a7cb5d7d971d897e9b5a1eb6c7d49ffa6e7f90d24194d382f82de0bafd04005fce3f9a96f29bfc6b1202aa4651e6dbc2b71cd3589d8758d19afc1a2f04b5fe67d692cf6ea2ead0f7a0da72618524fccb825e21481d58c4c8db0934d70d0c8e3504bee7cf380af14aa57b05ba68d6e853ce586d1520d84f521c2df21fe6c7df3780aaa9e89e517a32426d9166748846ca4711e708842d4528067dbd25cc3850bcbcff968b376c94abdef3b32695de1ba853af58cad293a8d313514dfdce821fb162ca19c2d7a5f7c047856874a8171dfb8d365d0202bf75299fa366a52a3c71b60b544fc02e9275792569a242e9ec49ff188c2d56eee0c4daa262ffc150f2ff56c56b7f17a94a25fc26a570ec920d29293a223533f3c8aae1590d88c327d4088ce5363fc957f7455c2196bad02541ce5d34c321cdf0117046e9571aaec410d79e76de4d6fcdb4d9e79caac56ee11aa8049c9c7c071bb3ab88017133ca5bb5942c0e9185581ef07e1758b4fb3a7b3bafd3d695a36f59a96864ece56f2d504cdea9567e968b22cb23b30b864d2c7335da56cc6db958624c5fd0a60200901404880662366d17ec73335e4d888a2d6ea953c6b682013144180147765a81749fc0fe18fecde8e25ff2bc3f78ef0ea7ebb7aece86583a815d80e99fd099532a7efdd3f9708d07387f139c41ced6e41822711da1cbb7de0f71d326a5381796741de19c5a7748d3e4c8c72089b7f3e60ddaaba94bd960e2cced8f8a46aa45fa3f9c2ebf129a809f6173dd3af85a7f2df07c49d60960ee3243b69fdf47650d0c76edd92bb4222988f8af7b5efb33a459466c14d27a808885304799028e0842a75f7f1a6dfaa68d170c8007a780cf01cd58552c77972625b78d6cfdc2d400b95c4509a4a4af33626a899a095eb61568a6150db25debbadaba0e8c57ed332d94f426bce72fa64b19b4736e86465ce201daca78b2cac933a8c790928b0e3d64dcfb638e9b2b634f3a8cdf2ed5131ccc103d82fc2d872d04d6b3863fc373c4ed70cb949462ef2b27905f4c7c739c898a9d259a4361836d18af4f3a8f32feb3467e34058ad528586859702f5f9b5abc9c323312515bf5cc2a47d97f87b37bb428a4e97055fa94859d2750b40aa464fa8cb67d0735fc9fbc4ef849f7fb1c5a9dedb77deca045ed069564eb88bc9baacbc95c514121de170c997c11201e6722823d40deeb912bc9a19bd363cb37e8be73e2eb0b7ddd2dd005bcfc3b771b6c0a5870f427173129f8e7f6fad1c325deb631f6d954f4a3b6994220ae52894383c0e2667502f6e5cbea80f41f7c687c5433dbe1c8ef6e020281b062b1467f81a5806c9c6a90e37388251405d25967121b715cf18b02a721780d9de44cd7af12d6766c7ed9dea12706ce8b449fb1e129f7c8c717952813073bc3ed2908a307d24704777ddbba46d9ade2990c6859c9c8796c7da62c256c9e10730080d8584b42ae68e04cf652500df8806024198f330aaf92b6faf40f86d46504aac31ae7e4d96f0375a072f2a5335ace265594410555dc432b13635e7cae11ba2a7e76b342d424c21d711fb2109bcafcc50d63ab52d7c79c5f8a1d59adef7fc309065bf08968cbb7fb8736c0706d2a41eaae7836fa9816faceda0c98db3b6cd9aa907da67061d35ebb383f0c45b0debb0884349929818b7654b3945e4e2071ae4e79989aea811d0b81228f32954f2a363b054f552bdc218fe91880bc98ecf1b78a6dcc015d7baa605243e61b7b85305692366de0310bae2c7ef2e1e6bf7e697d4c4a8ca07a927dfaac1065ba1a09223ed4ff0daf286e493ea2df4556907c423cb74b07ed93d339c450f26bba9ae24cff6d7eb0ca2cfb40ccebe47ec8cb71373e0c7046ba78a3a8a664493c35e48eab76df3c6d0062dfb0135ce070a763e32dd957fe3f55613d3155d297875b8cefdcec16113825c36c06dea0ee23f65d9962c7c31e57d6f349f72950f8cd6195c8e437fae8152b0064da83cbe0ddfe37139601856a7ad80285a4562828e097a49833cf69540a27742e3c949ba3bb16d4b4b8e599a92f9d99db81c45c33e68023cba07b9fb9a987308d5a4f35ece57151ab6f54a43d0c5aaf437c32a9c29981a93eb9f607852da3ccee57f74e0d5917c31b21eaad314fce7576279257e749870de7c6315287edee1ffff0220a0d6c69658fb7bab84170c2dbaf1f49494e191039fc7ddc02e251407853aec13196c0f6c3d28aecb26c54c53099a6cc1ffff6b6f55dce26db10e5b10f8ba90b613d27ac5b44bfd70b884efff3ac0f9cbd17818b1a08fdeaec6e5bbcc0544c38f34dbaa64f2f84c6aec324fc429a48389db8ec9b9628b10258501f4245a9c9396ea040ce283b0291d26824f4e3d7f6007bd576501850451b81cf09831b12686d82489f656c1d7c1b5b6c058d0522c08b9fb658d530e66a38b3322818ca8150f14606c99f7e5d354239094140ad15570d0f6070cd6d7080f45597c6d07a97596c3365babac99f49695cd02c86c02404483ed47513e2029ed5ed7512bebd47d0d697854e698868e140103bf277def86346b0796d169245a89f777e0c931e10c64fb90860a67a183775e71bf5783c2347042981b99eb28829c3e8c26179a6ec0d1ca24465616e536bc4f4f2c17dade5077e61d7fb65b14e7aa0d5c4a1134c3de55d06cf824d11fd7316e0b357608951b37c5f1f42559fa2a84fdfa99a785b0441cbded0fc96aeb4c9e3b3ea383c6a88c1829918b682be8d74abb7e3731c2a89ac10eaa92867fc7f98a30c94fa9482bef88572273f0e4b211024aa5d15a4d927bcba158dd5a4af9c3718f4f21053a7d58498ee19ccbb7d58a786c564f4f12b4ac85e92bbf4e3b06d463f6268fda7e7b1f78cfe92a6f60c6c17332d1da2165d5d69d94591c1b5f01d4729b2fb04ceaf3065c7d49dcad68e77acd6d0cd408a8c6408b0604f85e1068a1bb8d33744059ee51a49f537811b7ac3422b438c9bbee23f14d300ea147f5c68097de8dac1812375efb877224fda7204b46a3060f59341ff200fb664e7f26aa4ef2dfc37907e1909a3880fd7746a646770e7afa95a4f8da9dcc694405a35d648fda1a9df9ff0d9d9d089680bc7080f36f6099218f4d349384369ab64d25a1ef54ed0e24de5f7930369288d5533597b42a15e15fd5de547131cffc0d6bad1fa29c812d6944dfb90032f174c9a1bbba968b9603aa492d82639e85fffa2e5eb1fc6974c651cb544dc88b0a516ce1fee0ad8651572ecf6c53c9cf0a0e2f5a9d5b86ad63ad4e28248ebb2eaf4d71188dd7a3c5e377a4a93666167ca0f2a150800228bdd77af16cee2f9fe652826bb9795836b0e4e60c26bad1e6e8046640d40396284e358379726cc7b396ed387cc80be5013f204218d584f8e277a8417748dcdebe493f1463443f8950b3e887508b1a9809fd4d28402ac72f360c4ba0281768d526084406bc9983b5d078c2249dbe7c21353eeaf4241f2e29c3ef684d6e8707437e47e2b6adc74efd5ae7ba36edfae321b6b19adf22c08af18cbfe5f714f298da680661b33fc1b3df124cf2de482f3498b88025d9fe1d02d50ebcfc2e762f8fa0b3ea314cdc443fff19a7371d5e109fbf2cc3b715afebc0c922df40f8ba80f467446cd321bb48a0efaee0a130861cf512e8b1d63649b16c3481827cadf4f69ef94e2b8e4a50577a92081ab878154713476a1823cce549c30836c456f6f27fe387736c9eeee758dd414541bdd73b85530cac7dff9406e869bde5b4b1ea372e522de1f77fadd88484498f66f0bcb2f54af971b9589fda740dd1bf43beb1089d36f774bbad7b061fb87882b13883584846e5eec44aaf821c5078776a4284f8f171c5c84e4ae371732fa42ae12aea71880aa8e28ff530995900cbce7fa7fa86eeafd66787f53c7f117728a380d339ea19e293ce7c56578dd72783d5feb42eed59113fbf1af86041b52fb445ac038caea3ecad30d6f280903e50be04b1a58697cbff92a47e029e07f9630673218feccb491876aed24335f95f52fa813a7d4257cac4b6cd29714beb5384b517570acf4f9337cbc58e1d0a11fc321989212e5514eaa03d21f967bb483ce71fe2c47dbd8f69ac78a69bd8a32a66e05c2b5081544d2a2b9d539481c941969d6308476ed55b811e35250de86b16f357588c46d90e4d872bd10a9a9fc8efaa60efaef65cc9650390e80b700b5eff948d5f959fa8b55d6e436725b413a66343ecd1992f178de922c660e231b5faeab35fa2e066471e69a66bf4bad4ac5121256ac265c268669516fb683883dd4ef2666d4ea045f8c89ecd688e3961c0301ba54074e1c84b3c812835fecd046485c6a5a1c8a912d4900fd652300fe37648c8ec2809f12178b282e79da6ac32591db74b95b2a3b09b2bb54f4b293ca9c1e66419bdc5f8acb90fff8bbac891b98ecaff30622e6c78f6b6043dc451ab8223f16864e9d430e319d1b920081ca28233ad65617e78d0c46c9a023136729b39a9c64188bfda3d3dce04de642c99ea46bbbf50b63a5be909da1e92f0ae8fc244184f2f0dd68d7cb97dcb741e327b7f3924a15408c107c73c54f30d6d354193639050139c2bac07e1c987ebb9b0793d21e7b127e4636478d1274cc582ce746602e7449e76d20ba37f0148a65d72cd4da095820728ccf5be55b8fe2d2e7bb8f9d6c107f94f3f17bd95626e63125aa6d803c29e51594214e3a4490efc3f105d254261f5a558a7f588f9b8b79660aa896146bf1d8d3c52d37933a8af3cb352d97a229e484d7e68b08b231de6cbb8bd777dce5db64abe5f9fb1caa3d91fdb6e3c2487fb0edd6810f2d5db613aeb3cfecb45f43ca812cd77dffc509fdcd4a9dd14a443cce6086355a4a6ae3c0d8544b0335d7abdecbeed41f03f1a0b16e3cffb1a1a178a2c41df2a700e1e1b6be1382e18dbe298b3c9f58f5fe001adfb4326f5fab9913ff94f31c1e7b9e030307db390925068c0e5c43cf2e4605ac79a29dfa20c53a1c6a7e09c3c4ae4cdca9406c7ba778496224f1770e155a14d1ac1eba0ee11893ae7917919af603e593e0162d7983fc223062d1a89dcb2e1aacdd910bd52c1bb5d9840027d5ee3c607228ad8133aadb6df79fa7365cc92f6134ca2f8c30505ee93342c282450e344318bd9c151cfe52a7f0e65698f83a4ad22ffa8b5ae0fdd8d7bf13a648b09d49bb918e8702269ac09804a5349fdf5b41d125a7308426aaf7bf204229b8e2b10d8dc9c04b94f9c5962a545e5a0bee1076e4a9d95be781be9f94c2d8d5ec5f032d4a321313c2884307666e319d88047227aa69e3aa42238365f59510eaf61200273ebf358dfeb6f37dce245c6376a58c173013bc3bb5006c307833458c923ed318ad466a274e9c3055ce8f1a83cb42c2c57bc805b5f0224d496d358815eb3d65a6eebb03ce21aa9ceb1a877fa1ecd522a6096757ff1f0d6ace1022c7462c74057ad4ba26dd844c4c4a974f8d2279de4972375bfd231e4b3fd26d5cb7496ae4f8f7674edeb35fcfb299e9c71613840cd5d98b865ee747808aa18f45dd83e485309a9c5785cabf78716d85bb2f29bbc42c860e774c4bd9bbec84112384822d96afd0d3359cfe75c3eaec119aa2790847bf0b3ab730cb133b572ba1ad298ee1ea0dd7cd140d03cfb4eba947e2fa7ff4f2312672004521cda5521c04536782ff4705a4e93e6f746ff279643f97e44070f87acfdb625d982011dda2aa36bbb8a73a590e083c8eb6274eeecac7a12b608d33c30776ab8799d937c6a7fba9908076f344037b497f30e5041b818a1209b396494c657407048ad214a1748da95947b97e394a34d9f76a2a01c673becddd383d88667b73f137bc70268bea701272d8e7f10ed68376878564a962ef44f510272756f233a8c6b122ad06ac370c63655145ebc37b86223c5f3adb10cda097b7488cb98129e9d01c3180001b9e1384bdbcb4679677f4cc98957bbff0bdb74ab935b9db4359dfc5612d467dc1e59ac29b6173b4a08226fc845c62dcc5baa1571f4d93546fb1ed900be776de1ef3229830308d30d78d1e55be5a6489efa621171f1c633327586d50992e92325a95c8817ba03e3a3813d0ca8f67b8fe028466d4f838613e9f07220df25d8ad175c1eccd0b64cc7faed2ec246ca18fffa71d14e5bb271baadace1e605a3048e0149eba0cc40ffbb410fe085a1ee1268b7aa8a6e5c23eec7330b19ffac4fde3ea45d7aef3aacaf9167e66d2967573f176a1206fa038502fd3cb984c2fa58659acd472732f8030013c6748bb1100031c6af1406f2574a52c1c027a73acc6fb075f8a3575a0176823cd7c9978d4ddee500b91cde8d6100a8a2fd4eb8ec9a344021f20ae5b7d9a3fc7c8b23cbb41aa4328ba662d127eb92376637c9a61a7e882793bfe076ea4926ceddb020465cbb362222acf88a59445b973a9450adb520cbe435852fcf166d4fc75f3edfb46fc67ae2b49d77763556bea2f08d51531750ce7cde621b03b692f171be6cbe46aa447996eba556f845749dfd8ba85798285f932de4bb8f9eae4b86c7e274e74213f1dc6909412bd93dc7723dceaa8f8124a1dd5b88b8395f94f95b7b38765f67980550dfed390fee3eb8b9dedf59df0bc3da69e8934aacb5efbd5f586348d32aa8d33489c06a83be1391501a3d8d248e9de16080166d459943837b77b2a123aa2f9f2261e5c9b2ffe5fdd4d30c8513ab28287316a4d03214b7bfbc5fc0188f69702e62ab814f8a8b3ac2b6a8984e7f67b9005af857fba66d244b7d4c0aac4622a23af77795a01ac4d8926ed4db778770f57cc3fb6cde5990666753601d84c0fe95201c68b12ca9361cf78eef8aa48006175f58c6226ee046be410ecc439909ec3ff004a1d450f20d0e6e7c2961bbc22fb7af33f6b1efeb6fec4bf2b908c3e8ac006793454c8b58f2994ae9a53744e22c5433c532d99261733eac7f3f0e3ce7fca833a15c7b647122fe43287dc1bc9eb00769705a4d5690dd2dd4ef1f8556716aa697180248ce2fcf694fd7d3c95444dd5a39dc35f4cffa8a6e1d527181cbc24ef45903a10541dd8365ef266ebbde5ccc728f2b6f142cef8ba4143030f03a149cf490eb274f153829b7f6cac0366979994d0bb3c465f489538ab3e1b2b7c87c897ee2ebd2e6c2f5c8ffff79c7cc595893010cda98b304b5751c5ebdb8919a8fa59733c84672be42e605fdcdeeb9b430a1491f18bff9bd526634736d297fb3ddd950ddc65c45569f504ca7bc67b57b61ce8a1775980aeaee2c7e339c87cc41567b0010ca727f951f8c65a5a57081aff651b301cb21fb2fdc5531fb906a97d478764ae4c1b283e1df4d0af8a9d0c679b4d33bb5bc801fa7df74b64b2b8fa9171d10f3f91bd496e735a3e6678459388ae11878bc33b1baa6da8849980fa6bd1271416629001fb1847d44c99870fb8731de36bbd6752c395c2290fa425706536927bfce14e1ef3f91d338042b4310dd7dc4ffac179c4847f52f6690a49d0940a43860bf41d24997b713c242690476990d301532374913a504acf8dd05468576a4a0f94c4b3976f3876e6af2eb65d16dc047c41e48ef43517b33a4c8294e0dc31de9fbb2bc3191ff051cad78c19e42300d1890bd287494dbbc9d8460e7e5dca49abcca613faaf5eb3da23788a60063f53a5c976bb2f01d090df332a3d6fbf3f294d625da900221a0eb0948c68fd99c04c3c017fa517285e0712e4c4bd0e03cedca65f13aca281c78b1dde825baa3d811e0b6bbc8c92ec53e56c0a97d155949435bf07bec337782ba96f021ce0d503c20ff94c4acbcf90ec9f567a402ed083b44d7094535626a6f9e7c08c2ea9787a496578ebd7e7210af2927bc0c7c21ca848c6e0ca64a8a32ba0c519e30f51357dc28725c28a4a4c5389cbb7c905b0d2fe80a908e6856659f0673383d687fe75178f446bb7e43d89458a0a8e8946c4e4599a4e1e3539ce2f21ca46dd9863f1310db7e86b16fbee0506c9e4623b16d3a73512e575e623c956090c66bdac0973bf50a9e0b9568aa90033d54d7639980d26a90b93a1eaf608139e4999a83d6508d0f4fccab954df2c87f52f712ea79c49e562afb33e06053d63e87e5270bd107c1e1b9bcc00cea3e76d87020e6ae2c92d0070acfc035ac269640721aa270dbee2f51432ba3146c6ef793abc07a22b34d6f8287503acf14dc26e817a25873ef8f5c4312f5c17d9ae6b6876c1ec15d62ccf9677b84a9533ed30b16cd27a500de42c71d71653f2916ced78c3a20d4ece8098af258be0ae979eaad0af7a33463c27bdec3c0d427e4b2ce4a17bcf712e3fa4985024a2ef5315989557ce3a3fe3dc2d029937545fb137e7a4dab456c3799853507e251785a2f7421fe0d80a38278a32e89f8bafd73d8abc8aeaff0e9a302d24b7baa7cae483220461e306ac8daa5d678065ab87b7c2c340fef5806ca58e6f1c05a7b611585a28f67fee23476e8073d14d1acd4bce3e9bb6691b7b51e69c7184911c74cb75f5d4d95896ed4140f9e98e6232d9fc7d37868449cc1b35911821eddb6580e16ad5a17880ad603f824d05ccc2033b723217881bc706e7b2e961c3828c65f840fb22f10ef81f071e19c230fe3fc35d98a6da151e6866ed139cf82c1ec656b872d63bf6cd75972aabaf90eaa6bb86ea146375d9c2b406845bd78e9bb85e4eed546b70d8cc3ab4f9e60ad93fdec37642a4d4dfbc96864366e7888b94b749d88ba192f9613f6b98b678a4c0281693179e76b91c863e41b9d06ea2bf37c7332b55941b7f3a5d83adad5e054cba4a43c6e237913a89c3e4448038bef0f6bbb8771081f0bb2bb2cc8dd26b280c4fc8152eb2296348608451a64f1237a30e4b698f82774193671bbbb88ba0b4b65540e1553e5f74952e4f0074375d5b7269902adbb43111f0dac973455c5bd7d432af7808ba7cf73760a2997641bab6751d459d37932c0acc6bce87bb2d42736ed421abe2b917aa273e1ab5bb9146c3d7d6f1b274a1d2b6874e495505a117bd57ab8855860ef06a9f35dfc42104b8714b78053a6a45f9de9211764667c5d48c7587a3a04e3ca2e4a799b68e07e0e25210c3e7cd10783d0d9ac2fe55f65792759138af93b56e3df4d2eeabe8ef1bdf0691cd34c9bbc48492d142331ed045fedc6a1df5502c87f3d5586d835165286971732c16c5cdce361a2ab72621c28651beab72e7446b40685167ee32874fe3d3c4058e7e55c29ea3c2d0c6516cc0ca1c6b5f49f4d32c2a045197956247d7742853f955615ad87c4c5ddc75df4efdc97c8dbcbd44ab54aa832c895d8f72df631139f4c38502badea84da5591f89aa47c58a46bda130add5de0647079c93f98934a6ac63165e79f9338b1e9ef77cbad2e0c27b8bf5fc8c19fbea49685615df37e4de34b4959af5b1b7a5f4a0b8429ddd75e48f8f99614647b8cba0abd8add169b671813ebafc36ff8652e4154aa3e9d418df7a0fb5f45464ec6ca14529092078a3109e10a8d141cccc0eab70f87fb1791b23134a21a12054f834ec1ff1cff55eb6c609a2f97364d3063e002aac63ff256367ad9c734150bfdf8b88316a8b401100e07a9ae60438be87695cd4d1f9e26dad466c810f22c47c11d9105d989c88349bc36a99aab1cb6a1988e3e205e0918e6c78f205141bf31401a77a53e37ced4f74a4a40d145c9e32793d9675bdaf7a2e64b7f87d4ceafb1df382da3c398fa0504cf2c97503e2bebf399af66df3c94d7bab8c0099ca8f373785e28f30372bfef0bc2217562e7ba2ebad1bb087013056b80d7758859b22df6a5572a95d093c73f7be2391f791936cbd6dfbd061925ee697415190de1a36761a2eb922f7fabf3f61d948b727d567957f7fec5a2111243a3bb0a31f2bd2dd983136153b9eca7b1450a80785506e548e75d576e089997ed5ec1c98e7bab2d52361169f8a177284bff78f1374c1cce7349a4330825ff303cf7c0f07558b32c3fdbf28b824ad506705699bc744ec4c4c52e1c88263274622abb4cdc7ba1c54b96326bafc8fba44d8228cb950c730c55aaa670d679b0fb6a7100f4a2e961d2f30bf3e344fb650b0d13071dcebf6f71c91f345f436beb822821683e350db66996b95f4a8f7d8ecadcc6fec8e3e128c3938a150c284492c3ca99201755156e109f4cae505bbe784e8621295e1f080b6156e632296c1410b9a432d30ac716c3e4e1d00536653e7c26c3700ea7e458a3625ff54e7ef8c18882eb91c4240cfb94af4f67bb96cd9188b9a5de324cc23bb546d83b2d022f731b90a5b8693bf525dbfbf0fb78924126be23d6f29dcb1c9ad6057c10e7e6a061a31febe3ca24c3d6bf6875ffc21350741062ddbc1e0f1bcd37b5ed4e7bb0cf98dc737c143e91ebd98d84c1054dc4913aec8017a232feec2323673366e75d2de3aad9cd9ec1760e6db0af681f0a185906626c76de94a555d991abcea0fdcf5b63a1deab723cda960d07bbbfaa20fbb086316669fd3ebfeadb10482e75fae3d199b6dcaf4d3326ad4bb8a64322e55aeddc0926a93861be8c8ce3adc3827be6a01a11eb06b68c30d25959a42ab43d9a822a170e95dc886b724677047dd77ac513cb045fb24da1831e4a1ee0e1ba6f0bfdafeeca7dd4fd1504055e62c474fc33e2d43f5f558f16d0b1818f99169827c45e5dc2c37e22fbaea6b4b39558a860766910e85ecb90dc5f864cf8ce9e2a3898114063c567388feaf417aa2ab3a275362bd4715c1917cf8900a8b7c2e6dff0f792cfcb2a079a42c70cd5af29a37200993bb157780d60293398565e80935dda029f385c9d9496eedac35a343701014c409eb05768192b19e66e10e0d79b4442bfbcf671e985ce549e60a1369255afdcf0835ce3fb000e6d69f695644cc8e25fea8ec4f78dce94b01dfb3cf898d1d886b9087cc9972cf0b006431560675e1b646f88071ed1a2f77f63692d915764ab9331ec2ee90f976b25a433f1a5bae8d149dd0b39011b691e710026ed9582f9cac40a56bb30abdde5a8f3d77c212432cb0798dc65e4837dfcab3cbf62596ec73496c5a947d6e33208446f5e591b4075e1acce15fba7daeb72bc129e317c7df05b97ed223157bd7de7c7796541f1aef78290f679fa1aa15a9d8887ca96af4bf54970202b3b47f75c38874dd5e2e059db5ccc18d7f26c63e39b0e5f97bbf240601301599f60b92e23f67ba2829ee517db806c50a5376152aad29be05c6d4ba2ecb001d7acbbfda5e3cf0cab0d66fbd0e8bf9a07b32d731e3af8fbff0ae95e6cc07171dd9b0f31619efd892123f4f6e804a5bd1e94b02e2771f2ad33db5c5fcaf09a3a9c5439c2889bff04737e2ed0c7dcf878448af6c96d0ad0fba1ceb6685986b912a4dc0525f97cb1ce70356b450fdf5a294fbe49750d6a1600e4ecaac927c95749e88a34ee29883fb93a90133ca9fde1a134daa9a63bdb68bcfa5594fa30dea33ec39da64dcc1aed3da08fc6f818cecd61b51b20d03abf460355b106967d3b89c8690b9a1c74a7191e9b89f6ab8228e873ff6d1289e627f9f408089c494eb287d9d149d5198e44f298562835c741ccd491e773b14551131913e347814df6956f3c12fd1f752ccb6bc5e72efa1703281d8afa094342876f07f5558c111780b565ad8c6093e5feb9d153116c12a56a42bab72fb3bfd977c0ec2d8ad1f5a57279c780c3f783a2c4eb959b7cc67da9316fc329a0f2b0c2ac4c23af9f263bbc6e3a1dbd5a030947873331cd7d6e1b7c135a5176426abbf742e502b4dbc1f0df99f5231a53b90e36994fc7fdc659b4ab93782e8269774c272602f031cc21bfd08f55b09432069b90f85d31e318a33ddba15852e803f49dddc9073f35fe0103316973ed0cc5a1bbdce95771499034ed3553643313214c1a791b97635db53f505f9e050bf33c4db2aa9947e3569742b87c0887cb4d4812f206f2bb0e896ed674ba2d1780a25a73325603db4f51e9528423f85853ec5d83588deacb45658f1aa73db0b69d6dc1ffcf6f2f801c0e880f7ab2b7e34851e9e6ff62685992dcc5d6132afd64f8a8bcb2f6d10e138fae36b4b5eb6406a163db0fe7bb4f7de9411f7537bc220a631fda71a33b4827fe12a46e6b4abd74cdbc036475cfba70b9ed3ea099c7161ec13f060f484027e580dd3b6197628d1d8c95ffec5e90639bc1c95e5b3702f022db6f611bfdd2753aa92d8dd712b8901ac2d0d344482d1c9942b6531c493373b22867b28d1a1ca523bbaf39ee85f65e5f9d6685595931ca1c55f95aec69848381496c8b21745fa611606214712fc21fc6807d25225ea8ad493aa1ef063358406d9a964b52694b50aa605a2e308ac79949c4b3f2afe1d7d1eda0d02f59d88db2aca00b85a1c2a15aa69c1f66b49a618f9944e4bf1f9daebd3f298910577ccd304b30ce2d59f9d71f29fd3837959a9fc891833b5a613920a6e851ad0469f68950e00bf6f0a85aa217229d9ec617101e4959d1e91f2132c97df96303721d6aa26f1b85553bad193fe5a2a89079aa25908c363b408d52500b96bc6b9d2fa0c55e33d760497326ff095b143cf554aad306b13624cd1d7904defbaf5e0d3589e60c35875e2f59acbf404934435903f27112668c27061459110358957e959b2a6ea819f5d8a5069e7e9a84d6f86be670e152b30d179e9a1155a2ece2f9b93cbb1503e7d4f5a8617132ddd3ea810cefd0a105a6ea81992a53def5a92d694110190f570a2bac78da731ba119c786e10aa56f320b54cb2d87654a95b79bb9ca340dd05162c68439c2c79830c578be5829464b5a11c31c81233e4dd7a089e7bb10d62d0c85184bbe516e18c6556ae61a1d6324f94e8ab7388799bca3063813bd886ed07fb6c433e64161a3314ed91a56958275a12e24b340cfbf03dd02c34990036f261eef6ae3aa5a5358ccdaa96f0f07d2c9336d904d9df92c101893216c02c49b5cf0b9314116bef3d08d5bce889943e1d7f0c16e4fd668e88176edaec91864ec266093b776f3b8ab06e49428ef47dca88592e384d01271d7724b4e4761995c5ff57f015522b7de1657338bec2edb4b0880636e2834055873818e6f38f043cb84d8d1e5d4a6d394e27c7c7411eb4cf5059545d60b20f0e9f8449c521f8a900ccb4dcc9986685394f8c2fda856bafa2541862b164931e0d73104d8daccbcca10fd6fe81df27b633dd8c77a25eb693b3718b82cb5c7ea449bb4104b98c7628412dfdd3c0040ee8a421ee3ec66b639f6fa2c2f2f14b8585f0b3c9f80310c07ec240c04a1f70c5f4bf9508b3f25c730a7ce872f00d78f9a8c145e858ab06fab8023f8a636b0e1407557c2e01a1f121bcf8c3f2d2d0062b4060ae7d9cfc851120e2c1000d6856754a183ba28354a884d20c78bbdd407e67712520148aaea97727809f17b7088e098f7bb6f287ed36a2e4ee54404c143759f13c4c890c95b1352ffb88f1cc83f40466ea09a540b12f853b679b321d6bcc59a0327ec9d91186c3ccc801ea5336cb80a6ad7f219a429da48943adf05c20802778b77fbf07e67b1ae37785e4a9a23760e11abbd7f8ceab5b8e4f09885312bc616490eda02cb3fb71e1c88ee011962050e7179ffa382dbe5864893babb958c381be29dfaaeba50d2bc4fe9c4862800ed76234d14bfa391aed0653405ec1ab0cb2cd296ba74cf5082a7634b61314bd62cf9dee20bdb2442465e5980d6c1648483b80a65f5792022914335bd10f93c5547670f544a122599a74ab73f645a06da32170780b6cb8d50f1eeaedaf33b8afeccbe83305add4608959d8270126058fe10a3f4c36dd5cc9dac63263fcb04af7b802e5de9e77fc5ffc56a9874fdf9bd15cfffa0b88376a19bd4c983c9a0be3f6bf045c5a5ae88bf181f46c952e5ce98874bb311b8cc3d56c355f6b947205465e8899e8b3ff18d2255d108935e1dcabd69abd1b7ced58be68758d8980aff6ad499039c41c567ea7eb1e10f273daa9b23b509934b03d4756736934754f6fd91cea6109882db7eed98260cc4c4e3dddffd003d46492eb8532726fb6450292222508f6194a921d34f05d491e1a850c43ff8056af2d27621c27742efdcb5dc948f81c043c17ecc8ac8a64b5fe5b899bf688150d16c80b3502473412a0ede02a3c5f24b19d6e95cf8f4ecd9853ccd524eb5a308939568e7a738d5da94b88ce4fd23376e3d8785f78795107251ee41e7897732f767cb94facb5d619a559ae30393ccabbf047b40382b912501e27605b8c336132ffcb7738e52fc1f622ca2f83e9f66bfdff2e3b6429fc896e03bace22ec4eafbf688e9c0e1858612c98b583d7f11889a01ce976088d64eb4b9c6de1dfdd7c61cdf863dbd98227dcd7b6238fa912a1183ea2d32b1e790ae431e7b66ea4fdbeccbbb36f262a45b8f6cf914983c7e688f228850ce50932bd2cf38e453217ab475cfd7015f5e26460a4762f9f93d8c1eafadc90b065daf2ec119b426edca3c03faf62e2b5e3026be243309018b58937dd4faa0ef15841558d059bcf6aca16b543d99a899061a15fbf20485de25433fdb827e6f729a2cc4b3730c0f1879e10a513fe717793a60ffe2dd62bea0fdc9d4f369ed867ec1bace75ef61bc647ad90adc141856469dd8a973fe82326757f141e0c494e0d2d621ffb7e654e4b5b83c018fb48ae387a5db9879b5fa327108f299d424795bd169d30c566a01e52cac2a0e9388bd1a3ced4758c60311e8f6b1ec439afceaeb8ddfb88e45ed35eba0c99bbb279f38eed8c631cab2a62828f49389d7b76459793882f3d01062a5fae281b0627a24c7f10eb3095c96f96509b1fda13b1c80140a143f79b9293d31425244cf92a34d4bd59059cb0916588ed49462bfdbd14e164bb3129e2237583d1e7c79e25adab4d1ed44032fe9dea27842ddd213feb82bf98104642ca11ab7acdd3f07752a39b52060958af3393d338d0132c2ded7fba61a6609dfc60c825fd96207d4d5a4fd83f7f650e0a75abd6a873ae7bc867107b1745c8fe3400c74ed8e7a8be2322dbc987c44f14123742732bc74858a71722621a2e33ed302cf803bb16caf27b60857fac1ae8b4a2dc24f3ad70ab0f3bb12fe6f7b5983941b691cbc8a081dc19632111f87861a470f040d3b13caf66e6a92de06c0e3d6ad8c9d339f1c8f01dd8299ba163824743d1178bf9d15de832a8460baeca5be75aff017294dc46dcfe17cc40d016e7c474d75da66be306b4800f4d98cfd0165d4889209c28286065f1fa8c3bb9288dbe4c3b3d67e147967cda2151ee112f326d49e27f0bdddb49da30b7d9bc456523c5abd3461658bfea56eed42c593f37dd77da211c4e20b58ccdddb5de262beaf0ef49e8ae8c52b20355be156876fcad7473a4677b6f0eb571017c932bd7b0e2257f6ab25f1e507ecf18955be72daacffec26c7721a700555fe1f5863bf9a5a40adaa39f2f663be3b7f4c6625cbbdef5556c7f947474c43a9774cecfa49a7baf63d1d147d2b7c089af37b283ab2ef091697df37c1ea2dc729a94831c2cac6f952f284de86921b01fe37417c5fddc5ab21092bcdd75a7ac0cf9e3d7da92843a2746219586891894cab0a3c11cc91869d8c0e19a1736dd34ee0fe0dcfab03f5a94a598c5057ffa057657af7d7f442861cebb9f947afdf016451a4eadd439511b8b03e4e2ff7046cbdba7f5559ab632fda43fe3a6beee5d4e74e59b067d15c064e02bf4d7dace162cb44837a34552d30ce4817c76fba25caa19739acd7af8a0e46c4681aa3bbd0ce1f67b7358aec3fa83016e90d30c290a2058c3a1b466b16c94922c4eb0af82e892a78ae0cb594ed00933dc91a1dd897f4366d8ae18e9aac25784f7ee4e5a8219f5cdeb1ca8a26f4f5a70815d8587bbdbb76738b0af27a971d0b4df8c455d1a115c74cc9dc22dc2fee615b6c48091bdc058c3e98e7c1bca3454682eec2030fb404ce18f4644108c80e6fb19d97c3046ef4ad302ee1a8f38b4618f8a1d0ec371477b521d22d2816ad6df9ba1addfef5afe3089a569c0d060e7975095d2a3da0ce43742bcc189c72d2febcaf9b0a45ca1ed54a41906f4e467a1e9ad5845ffa7a3c4c110730c769bf217e06f123d421ab1d06f3b503f20651260ed408af4d807848d8f30d8179d8fbac7473bf80478dd08a24673407ef6f49647b73a0499428c2a3a2f0b373180a0dd746914ace3732161d962e217a32d53f233b4e9b16e89290136261084dc1dde61d7c12f6f4c15a6a59137935760e5b7f5639f2ae45c714c7943de77df9050f25c50b30df26cf882a497e047cec81851799c545408072f9d5d96af33e1aedd1f1e22f1a2de19207ac15762758da5ceb8c716f85d59966147b2cb0d3012ba3ea9f50c33a0dc318490fc50d4fb65e0c09a49cb3e2cb29efd8ff083fdf558f41705b3daafffc721e78efa649260f7d6e88e8d19ac1a0bb91c186edce043808435f922683c30339a2b11d4643ba1408aafbdd78496127929ab44aa6270661941620c046624af6bd4d907c0a95f6daa76cfb160ef1746088d70fd1e70227e57971b91320ccbe4c93594835da000dbfa9392a97e7d93a49cae7e870989be68053abb5cf1ff9ecfca23de24f7002598dd0d266b76089d563c1afc1d91af0f0e0567f7cd1dff51793dc6a5b92f49b74a2cd47ca913f0ef0db7a9c6dc4faf5ac2fdcc7b1cb176c443b787b8797bcb476d63781c7c2fc0789d514ea6d6bb97d7577b327aee9ddd433a62a74fc219eab41a0b67a0ce397f4a2ca3f5e862e0eecfcf9c5b2b19ad3310fcd0dea32fd8d3481ee2a72dee0a2f2806d4062f8c83c3257f6a865e5253abb0c35d3419e9366ba329f77124c05b8f45e65570212a997ffaeb7c7003f5fade1ee1ff22f6ce4c8f1281044ebaa6225faa903e169e889f69afa6042288d8ad86e4210efa1e39055ab6bf9600792ae848aa1a1ba45b9a48040a2408e88551f6e75eaa290ea3560c7baeba398d3f2492ef14e5f4dd3720d5e950ea6964b84af49020147c56de25db14a8bfa4ee0340f114a7a3f0b99c00bfe092ee6192054d26a813352596bef20ee0cebc46829ac96d076709007e56fb10d2e7ea9394b9069e52ee66ab26ec8b6a3f99f64ca2adf305491e0258a14444708a7085b9d4e5515bee0f2405323f19e95d256827f798e3079d810e9ee568cb2e5756e7afe7b80a8609e966aea95c567f1a91ca0cb358329a309c8a3975691fc4642d194780b174da2f7f5217c842b534d30ca54cb01a5abc1b7d1f679bdafcbf75d62fbd58d36e94a5d879a03ee355d6fcb5cd678bb75f02129a40717c06be7394045b0586179b347430080e3fd4a31969bdeb4a4acaf4a430e492fbc560c3a235689cf545bc785329145c268541967ebc431db1f1043bbea58259b18e76a28313c7f907a89ed7bc630d315ff4d2c67db1078715d63d0df589929fd1c2ce8996fff26ffa685cad824a44964e7be7d22a6b9e3756fd53228467456abd1299a1053f533d9c21bb2d27b7555c08b9a9d8374f88d9638f0614d5cbbafcdfffc370b3e5db9be85406e3050767f1aefa5dcceb0397d99ba9085dad53f098af73673e083c62c2cf128c43fc58c7c9598da2190f41184e632205f91debe490ea5a231acac16ac2c37b5cd3a6d8abc57a1aed5c9cdc4084173c27f26aedcf670343931adf6851ecbb0a04da25680e1da2fcb5a648df7aac65e9f4e6595ec97f0a5f97552c4240587c19f95ed34f34d3cddbc4a8f7c35ad63bfab0402758c2ac1d451f662663cb12f89cda95a1c94cea1c2f664c18a7c42ed66f1b84f38c0de6dd7dd09fc0d6b84e3f7cffd9f0d49c5bc1337d59d88bda2a92276f2ebd8724eea0f014d19d3b0b2c289c9c46d87dc07ba95ac6969e9b4744dc8887f00b207ae4e160f7a63fa78a371be5983685cda5793a474aa8e7ad025b3b7a2ff0320770f4da0bf5d9d26d05170b378a2d71e8658ce6c36d6eda500f1ac4fe99d5efb02a74caaae1f366b1534ba2be76c441f122234735835a970ebd9385ce4ef78f70e327ca4cd56902d1d2c9821c2579548abe462e42a4808973554fdea044be179d73ca09aa965170f69e4ac0636c404dc76014e3ac1205bffffbc6712dfbaa23aa71f11c2e4a39209e211e68529eef26ea6cfb674bd286ffa3a6633dd8070726d62216000db50826e5eb9800557e36e44f5b013c9822559d33b57b47dc58375a50edb757e50a7d729109bfedbfb9d1561e9864537d798d04e9a7e7500a88d6efd92c79692a2b0231a8a1297241a518cb13be62e1fe2bde84b4ede03443f0a04dfa6a8cc22187cc4c6ed072bfe9eae951c1d7d3f0b0876b81a32c17b62e062c5c950ab21844f01fa6baa1f0dcdbe59625dc961c48c2a7d04b179c446a06cb7295eb82eca344768ac7a6bcf6d5210a76657fd095cc97db6180d09ee0481e4dfa19acc5e0e4cede1a42a3a33193dfe3d334486d54ebd327c3dfda35680a7073a7e976de4b3ce250e405b75ad05191c6bf02d9d47803fd32b952f5163c305b1a9dc365f550f1d746f5fd6ed55b1d971b30c16483341d4c5889cb172f5668260794386e9c415b7cb1eed6737abba8fb1282127754df738ae5eb1dd0aa1f72ab0843f06e739f6871c444fa0a3ab9a6830e5790223a97977085b83becc6870173f5ac4d44f781e86e5421026a92f164e6a8aa16ba23629d0a3514d1008b176c827c24eefde4d4a8954c349c0b582b53cc1ce771cf4e5d4552671860a663ad171b0c7e40c0a6414fa61ff4c0020b8a2c787d5e67cd30f16352ee8f9040588583c479dc680fe07e0f0b76aa49167ec9e0cd8b31ba79c59ce6731fcde85633a493a41976e2c37fe783112ca26d3368cba6d9dd0bdbd7ceadf46485a32022968972b553c0cc94ccacfdf775fab9dcbd8a28f2fa4eaee804881b414817e55696a989be432f41e4706e3d17138f8b37f3aee4f21dddb2d1a2a321b24d529224ec76848432e989a983d991f36e48cabee10d56177bafdd27d622ce9be58a56cb6e158828068de42e6f4a0eb94f45d3244660cb278a302ab7a2df0762556933d417c16b9778b3feea5bb5b01ccfdf0341faa29d17d0e907ad37228a0cfe262da65ba83f0f9a1029a07ab9072c8572bfc8ada7c3d4c2f2978c8064a80e7c55f26f817e7f915ca21c8c12dd8ba3003a8d46fe5ce866180fa451b040122a251e461a5334db3432071efe6ea8e8f03df7c837df917ced8d7e9dd36134a017661c0195410b94bdc76b10dcf1a1e23f4196c498be9ed93cf24dd4b1c19c01e0e6d10e2e46994b11f8cf01a538036aae7c2d1f7c68aa741d118999de305190e7513cd37b93a5d068c43549f2f5567a1c98d083e64b25ab14e5b6fd83c3a1672702b9d1f911cab68c7dc0782da9e74f2c6183c795594c76d69ca50fa418c218212be26bedbcc9c5a504af8c7be5b71e546e599c00e7c501e516f71cdcca8e62cbcd68f736712a70193a73e590cc9d5008995ea035eeb734d94cc8de4cd09fee6667c8604c9e18b4c4a5ef0d984c96bfe15f393e4f20d915f60d7d1cd95a7d367937d3aceb10f5d0eb775221b88f573024a4bd0a94e7a8aede6649573c9cc5c188f7340313c54dd9bddfd33ace32689aee78b6ea475ffc19a207ea90e59b15718c9332efb829e26dabfdd0383004105284f5b548a9cf6d636edf831faa22b07c9b7b64c3d3d8ae4df975b5766f891e4571c556733323eed9de8f2fe8021408ed72a3efd449b5e2b2d6dd11eed684e058af0937d9f05defc70ad4a08fcba0029b3db54901f380f1c2346a800a8ebb20418ca704fbd009787ecaf54337cd3c1be2a7387faf4f526a7f4a945cf03011bbe133a3a84e7233728a86fa599d567ef406bb834bfc4deae9fd3548b6b99d6cd252b8c335e4d69ce31353712035bad2cf763f480737aabda77718132c099df70e70741cb20fc62c9b7f882c2d28fdae834fe827ae28362c5acdcc43c130ad7f51ced93a868b8a066dfb9aacf59712501b78057a5b702423639a2679e869e1a721d4a4b0a445a59cff7b636efbc4cc67a7bfeb6e229f7e441ae2f7d4c28366c0a89c9f1302bc96847889811122e5a6c15b34616e4556c448337bd85a6d09fdd79462c180d0cd6445cf7d1e09e486d2ca67be072e45f9b88e1fefe46f374d0b6590df94935b3f2a8511cf10c547ccfd0240abfaa712d986d04599f45e034daca9c52040105b6749461ef0c5744457e645df72680ac2df92a0745bf093a846804d73e616b313ffa1b96615c4f7282de1dd8903d7ea8678c9943c6ca9764bd2d88fc4ddfcf377be1e44851408c83b63f785fc49ed8a709dd73686e785ff30f041998440b38bc96f3800c2abeb170a4e30d5adedd51e1fdb9c1902d19b10b0143dd8228f4ef0c0ad68ccf9a0a132efc5d1611889ef669507270edc666afd383c8879779d8351b41b243b6071c0afaa85fe077974aeebaf663434b7e2007084a296f529e449c88c8f0d540571594ba3de8478dedfcf4edc6b675a6e82531aa26e5c83a784147a69d267bf747938f705c02cfe828bb32dbbfe8d0e3a6c4942b15a6fb2ddaba4a9d05293cbf1ba1776ef76ede3913073dc7d905b5a669586c93550aa494079492c4733ec6a79493c99225de4645d9268246010ea9919c05fc24082978be488154e3730a50e37f6cde427f77e3a43a42eabf0f8b643a6044e0d39d02ab53b9dda3c779e7b52c9a0c9fe998d34a97020617d3e44e3d9d7b2f831b3f23d9132504343c74130d0e52f6820f60d109c8d529a6f920710e99dd0e540fa7ccd862535061953c18ca41b44428a1b030ee8f8c9e0698f0d9042c522bf1d00c54d317e061034301cd3f1bafe61054c4b2297386ad15df8815b7150e8f287ed5fc304d900d5d6885d029c24076f0444c8b0483e2196e63b0596eabe3947319aec05859ff641946b2c60cad976622b8cf49b06ed3e058d8798b81daa44a42b59fc9c82ef6c1eaef80ee271934eea19a702760ebd08cef155b42fef6073f6aee227b444253b2e122f7d618bce30922fb0963adf3ec9c797136ff39c6f194d7d97289e5e727f750faf952d4f1887492318cc3b938d40ded873f86956da137cf66fe8cdbec893f9854b04fc42ca72eb6b9be7bdc176ce5f2438c09a21119b7c6693bfe730017881612f0b4f56c36e9acc6b6b04a86bdd11e8edf407b10f67b7b76abb2379680cafab9c105cb91f4bc47fe5f45cccb41bf1caba9e990683a392bff4de18441947b194437df23b4414e95d90c3c300bff55c174df6cd6e0bf3ac1cfda688ab3aee3965e4515316e6326b5032f0b9bb0949b88e79b777db133b05c811b4cb735d1bf4c22909e5a25edf291474dfc665c72e0b1d9a8f8e336d0d612640945f4ee98cefa62476d0b1e367420d5c17b306d4f84e24e9fe0664c1a84500df8fbfbf759a4e23571a3ff8e104ace8d71a42b6f9e8f3f61a51e7a933d72b41f4af3d6ead50cbd473ef0df07df083d83c20a8a35103c148b5546880909ecb2b78e45cd02e5eaa9b604fcd1b03a2f72402c0374e0539ea15909b138f74b51d336c60ae64d1232f7e780ec21fe9bc5b67b8e63870aedc5bb659fefcc9d6e7caa4a8fe8c0037223fe1615beff51d19dbbd19d405bb144df2e58e87973df1d68056c39b23bd2ee58b091a7d756040656ade5cebf8216c4046666aedfb5be645bb5f54ac5a509fad1c23e620972a6f9a7dfd98a31d4dd0e2ad94af1205e5e3622600bbe770007bcd4da538fa713a29d1fbced5ad9b1e5e4c22f12b77702207ead2470472b56d2434a0bbb2ec131b78e1948019cbc50aed7913b11f351c5cdcbc99f09d5a860f695aab369f3fa2b22c8d47d99b85b55831d976cb96885aa695dd11f1e0d418ad705e0e3eccec4af70aebc84d47a8c06b7835a702e3e4080816f454e8ae23fd00903f97fa0c32c92a973785c301720a8437588021f4cd4b1079dc9debb06eed5361fda7bc8ee88bebdc63c9e44062b24c098b484e095ef8da33880fdd2d75546e1a3ca73b80db524018801f92e13c02c1ba778fb3303f39605494e1d9301e6747a7eb73116a1f5eb789ebe3d84e6cf8261d12438b7fd8987ac8ddbfa363dca1c73e95afc5d1644ca964d1ce41ec71d8ae043d26e0673de98e71552e541326dc88374e9b0a9264392853495b617ea44b2d927e66c0949e34f3e41421d6435beb10c33611f7f3a9028c608826553d19babcbaed7558f22ee32ef7f0a895a5c816344589f4ac7953b5eb35d59dbf43c3b92027968c8ff4f735c1fcc1fe4841929f1773219329f4db4417c463426402e3fbbe858a7d60c3745b3f3ad67e9b29fade57d1486b4b979b2fb61aea56513eccbd521b3387f7a5e401941b34d13863446dca24df5c2293723ea061f927c6ab9fc3ee9c06be3c93465581cc983aac3c269da760bae0f1903dea141f849325204b11aece8c01889db6c63e068135ce661b999ef40ba2cd68b863b34725a7fb720455c734f94d8245a61645fd63765b823ce459919ad8031d2c9a7211c85198eb9f0424139a0c2cadaed81773c54ba61e13df14f361e6abb2f8afceb2485e01ea303ec4aef79969d1e15fa8f786204066e44ed54bebe5254afd695fff4d46e55cf8a3a05a876de1c26a7ef6602c2c7ba8ae8ef135b77883114024e369829b4ad37680d9e89e2d36011f18114c181f36c5994e3205a43c9dbd728cc3e378b210cbef48dd7e8aecc4ca0425f7b8e12af36d1d3c9d948c21a85a2002e8f28f6283a316e8ebe69d8de5d4fd472ea3b1ea627005f69e70b341092a7d94d11dfaee89d996b4242e0eb3b15665d39ce96da659fd389a8d7526d262af5fc31e607ce1e2b3347b7bdfba61a27a643da2e6a6a171df7ddc811fc42a13b74784c9ae72924d7dddc7a40183c99924eb422fb840312c37c3164667434e7bd656094076e02960f898f432a11c59f8942c5506e7ea1b57a678c36530df63d18f17351249daa2243169ef04dcef0ed5d25b761827d2505c44db390ecedeabacad84fd480c4fa4d80c892e1dda60083ce2ce9770b2cfa6a7abe93a073ae4ec3ded774edfeead668d081fd19265bb8296ac35ee4f2c56539902a9635a8fa509756e6b748d601c938753664875e1fba1d57ee206253986a5222b59d7955a0969c2ca95afba2e4d7865a4977c337ad6724b269896f7e29fcc594effe5dee5cebe7046c1f8f4754f97ae1fd759fcba946d7aa1f28288e31333285e3ce2aed6e747d07ece303860a66b4b4095f60dac44393558231cb6f3456441a857650ffc79086a48b261981faae1d6104861aaaf1db946bbb3db30c7daf2fbbbe05e85e9eb20bc4a7da2cf7ec46f57b1051e9edfc51941eeb2373ac6f680f2e5b5c5e390a8387deec22a100744b887876a6e950f4ab4a038e6cd149246caf3f0c7712cd7ed3fea610f88a82f48fc1c9f95f906fc05fae7299cd99754b823945f50fbd494335c102a47171fa0f0f5d10d</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-default">
      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-default">Hey, password is required here.</span>
      </label>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">
    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/" rel="tag"># 设计模式</a>
          </div>

        


        
    <div class="post-nav">
      <div class="post-nav-item">
    <a href="/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/Design%20Pattern/16.%E9%97%A8%E9%9D%A2%E6%A8%A1%E5%BC%8F/" rel="prev" title="16.门面模式">
      <i class="fa fa-chevron-left"></i> 16.门面模式
    </a></div>
      <div class="post-nav-item">
    <a href="/linux/Linux/%E8%AE%BE%E7%BD%AESSH%E5%85%8D%E5%AF%86%E7%99%BB%E5%BD%95/" rel="next" title="设置SSH免密登录">
      设置SSH免密登录 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">zhengyidi</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">39</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">5</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">7</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/zhengyidi" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;zhengyidi" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="mailto:zhengyidi1357@gmail.com" title="Contact Me → mailto:zhengyidi1357@gmail.com" rel="noopener" target="_blank"><i class="fa fa-fw fa-envelope"></i>Contact Me</a>
      </span>
  </div>



      </div>
        <div class="back-to-top motion-element">
          <i class="fa fa-arrow-up"></i>
          <span>0%</span>
        </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">zhengyidi</span>
</div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  




  
<script src="/js/local-search.js"></script>













  

  

</body>
</html>
<!-- 页面点击小红心 -->
<!-- <script type="text/javascript" src="/js/love.js"></script> -->
<!-- 鼠标悬浮 -->
<script type="text/javascript" src="/js/mouse-float.js"></script>

<!-- 鼠标点击爆炸效果 -->
<canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas> 
<script type="text/javascript" src="/js/fireworks/anime.min.js"></script> 
<script type="text/javascript" src="/js/fireworks/fireworks.js"></script>
